2013-02-01 31 views
5

Tôi đang cố gắng đặt hình ảnh bóng tùy chỉnh cho thanh điều hướng trong chế độ xem bảng của tôi, nhưng nó chỉ hiển thị trong một số chế độ xem. Tôi đã tạo một lớp siêu để đặt kiểu cho chế độ xem bảng của tôi.NavigationBar setShadowImage không phải lúc nào cũng hoạt động

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 

    // Set navigation bar background 
    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navigationbarbackground.png"] forBarMetrics:UIBarMetricsDefault]; 

    // Set navigation bar shadow imag 
    [self.navigationController.navigationBar setShadowImage:[UIImage imageNamed:@"navigationbarshadow.png"]]; 

Trong chế độ xem tôi thấy lúc bắt đầu ứng dụng, không có bóng được hiển thị. Nhưng khi tôi chạm vào nút [+] trong thanh điều hướng của tôi để mở chế độ xem bảng '' mới của mình ', nó sẽ hiển thị bóng.

Ai đó có thể chỉ cho tôi đi đúng hướng ở đây?

+0

Bạn nên sử dụng proxy xuất hiện. – dasdom

+0

Cảm ơn. Tôi đã thử điều đó, nhưng với cùng một kết quả. – lsdevries

+0

Hãy chắc chắn rằng 'self.navigationController' trong' viewDidLoad' không phải là 'nil'! – MoLice

Trả lời

7

Proxy xuất hiện sẽ hoạt động.

Chỉ cần gọi nó ở đâu đó (ví dụ: trong AppDelegate) khi khởi động.

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    [self customizeAppearance]; 
    return YES; 
} 

- (void) customizeAppearance 
{ 
    // Set the background image for *all* UINavigationBars 
    [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navigationbarbackground"] forBarMetrics:UIBarMetricsDefault]; 

    // Set the shadow image for *all* UINavigationBars 
    [[UINavigationBar appearance] setShadowImage:[UIImage imageNamed:@"navigationbarshadow.png"]]; 

    //add other appearance stuff here... 
} 

Tuy nhiên nếu bạn tạo ra một kịch bản với nhiều của UINavigationController trong đó và một loạt các segue của đẩy chuyển hướng điều khiển của bạn có thể nhận được một cấu trúc điều khiển xem tham nhũng mà có thể là vấn đề ở đây.

Một vấn đề khác có thể là tùy chọn Clip Subviews của Thanh điều hướng ở đâu đó trong tệp nib hoặc bảng phân cảnh của bạn. Hãy chắc chắn rằng nó bị tắt nếu bạn muốn bóng (hình ảnh)!

ClipSubviews

Bằng cách này, nếu bạn sử dụng imageNamed bạn không cần phải bao gồm phần mở rộng tập tin.

+2

Xin cảm ơn! Việc bỏ chọn Clip Subviews đã làm các trick. Lý do tôi đặt phong cách trong một lớp siêu là tôi muốn giữ tất cả kiểu dáng ở một nơi. – lsdevries

+0

làm việc như một sự quyến rũ !! thanx –

0

Hãy thử cái này!

[[UINavigationBar appearance] setShadowImage:[UIImage imageNamed:@"navbar-iphone.png"]]; 
+0

Cảm ơn, nhưng tôi đã thử điều đó. Nên sử dụng proxy xuất hiện có kết quả khác với việc sử dụng tính năng này trong mỗi chế độ xem bảng không ?: [self.navigationController.navigationBar setBackgroundImage: [UIImage imageNamed: @ "navigationbarbackground.png"] forBarMetrics: UIBarMetricsDefault]; [self.navigationController.navigationBar setShadowImage: [UIImage imageNamed: @ "navigationbarshadow.png"]]; – lsdevries

9

bạn cần đặt backgroudImage tùy chỉnh cho UINavigationBar, sau đó shadowImage có thể hoạt động.

+0

Đó là một thông tin quan trọng! Nhiều người dường như không biết rằng .. đã cho tôi lứa tuổi .. – Rikco

Các vấn đề liên quan