NavigationBar 背景色设置

一、设置导航条颜色

    iOS 7.0及以上版本,使用下面的函数设置背景图片,图片需要提供320*64的1、2、3倍图

    - (void)setBackgroundImage:(nullableUIImage *)backgroundImage forBarPosition:(UIBarPosition)barPosition barMetrics:(UIBarMetrics)barMetricsNS_AVAILABLE_IOS(7_0)UI_APPEARANCE_SELECTOR;

    iOS 7.0以下版本,使用下面的函数设置背景图片,图片需要提供320*44的1、2、3倍图

    - (void)setBackgroundImage:(nullableUIImage *)backgroundImage forBarMetrics:(UIBarMetrics)barMetricsNS_AVAILABLE_IOS(5_0)UI_APPEARANCE_SELECTOR;


    注意:如需设置导航透明,直接设置一个透明的图片就行。


二、解决导航条底部(tabbar顶部的)的黑色线条

    原因:由于包含一个shadowImage的视图导致。

    解决方案:

    1、直接隐藏

if ([self.navigationController.navigationBar respondsToSelector:@selector( setBackgroundImage:forBarMetrics:)]){
        NSArray *list=self.navigationController.navigationBar.subviews;
        for (id obj in list) {
            if ([obj isKindOfClass:[UIImageView class]]) {
                UIImageView *imageView=(UIImageView *)obj;
                NSArray *list2=imageView.subviews;
                for (id obj2 in list2) {
                    if ([obj2 isKindOfClass:[UIImageView class]]) {
                        UIImageView *imageView2=(UIImageView *)obj2;
                        imageView2.hidden=YES;
                    }
                }
            }
        }
    }
    2、设置 shadowImage,注意图片高度,因为不会被clip(即图片超出也会显示)

@property(nullable,nonatomic,strong)UIImage *shadowImage NS_AVAILABLE_IOS(6_0)UI_APPEARANCE_SELECTOR;


    3、在导航条上加一个图片视图,并将该视图send到最底层作为背景,不然会遮挡导航条上的按钮和title

Objective C code
?
1
2
3
  UIImageView  *titleView = [[ UIImageView  alloc]initWithImage:[ UIImage  imageNamed:@ "ToPointNavBgFull" ]];
     [ self .navigationController.navigationBar addSubview:titleView];
     [ self .navigationController.navigationBar sendSubviewToBack:titleView];

你可能感兴趣的:(iOS,控件,iOS,适配,iOS,controller)