1. 程式人生 > >自定義UINavigationController導航欄背景

自定義UINavigationController導航欄背景

方法一:自定義一個BaseNavigationViewController : UINavigationController 在初始化方法中加入以下程式碼,之後就使用BaseNavigationViewController

        [self.navigationBar setBackgroundImage:[UIImage imageNamed:@"navigation_bar_background"] forBarMetrics:UIBarMetricsDefault];
        [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleBlackTranslucent;


方法二:要改變單獨控制器的導航欄可以在控制器初始化方法中加入以下程式碼
    // 設定導航欄背景
    [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"navigation_bar_background"] forBarMetrics:UIBarMetricsDefault];
    // 設定狀態列
    [UIApplication sharedApplication].statusBarStyle = UIBarStyleBlackOpaque;

注意:如果要適配ios7以上版本,要將圖片的高度設定為大於44就ok了 比如45的高度就可以

2.設定導航欄主題

#pragma mark 設定導航欄主題
- (void)setNavigationTheme
{
    // 1.導航欄
    // 1.1.操作navBar相當操作整個應用中的所有導航欄
    UINavigationBar *navBar = [UINavigationBar appearance];
    // 1.2.設定導航欄背景
    [navBar setBackgroundImage:[UIImage imageNamed:@"navigationbar_background.png"] forBarMetrics:UIBarMetricsDefault];
    // 1.3.設定狀態列背景
    [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleBlackOpaque;
    // 1.4.設定導航欄的文字
    [navBar setTitleTextAttributes:@{
         UITextAttributeTextColor : [UIColor darkGrayColor],
         UITextAttributeTextShadowOffset : [NSValue valueWithUIOffset:UIOffsetZero]
     }];
    
    // 2.導航欄上面的item
    UIBarButtonItem *barItem =[UIBarButtonItem appearance];
    // 2.1.設定背景
    [barItem setBackgroundImage:[UIImage imageNamed:@"navigationbar_button_background.png"] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
    [barItem setBackgroundImage:[UIImage imageNamed:@"navigationbar_button_background_pushed.png"] forState:UIControlStateHighlighted barMetrics:UIBarMetricsDefault];
    [barItem setBackgroundImage:[UIImage imageNamed:@"navigationbar_button_background_disable.png"] forState:UIControlStateDisabled barMetrics:UIBarMetricsDefault];
    // 2.2.設定item的文字屬性
    NSDictionary *barItemTextAttr = @{
        UITextAttributeTextColor : [UIColor darkGrayColor],
        UITextAttributeTextShadowOffset : [NSValue valueWithUIOffset:UIOffsetZero],
        UITextAttributeFont : [UIFont systemFontOfSize:13]
    };
    [barItem setTitleTextAttributes:barItemTextAttr forState:UIControlStateNormal];
    [barItem setTitleTextAttributes:barItemTextAttr forState:UIControlStateHighlighted];
}