UINavigationBar和UIBarButtonItem相关设置
UINavigationBar设置纯色背景
1 | [nav.navigationBar setBarTintColor:MAIN_COLOR]; |
问题:导航条颜色透明度不是1,颜色略淡。
####UINavigationBar设置为图片
1 | UIImage *bgImage = [[UIImage createImageWithColor:MAIN_COLOR] resizableImageWithCapInsets:UIEdgeInsetsZero resizingMode:UIImageResizingModeStretch]; |
注意设置为图片后controller视图的位置变化:
当navigationbar显示时,y=0在navigationbar
底部,但controller.view
的高度不变,所以在controller.view
上增加的视图height最大值为controller.view.height - navigationBar.height
;
当navigationbar隐藏时,y=0在statusBar底部,在controller.view
上增加的视图的最大高度为controller.view.height
。
单独设置某个页面的statusBar样式
假设全局设置statusBar为UIStatusBarStyleLightContent
样式,在某个页面需要设置为UIStatusBarStyleDefault
样式。可以在这个单独的页面实现:
1 | -(void)viewWillAppear:(BOOL)animated |
UINavigationBar去掉底部阴影
1 | nav.navigationBar.shadowImage = [UIImage new]; |
UINavigationBar title设置
1 | [nav.navigationBar setTitleTextAttributes:@{NSFontAttributeName:MAX_FONT,NSForegroundColorAttributeName:WHITE_COLOR}]; |
UIBarButttonItem设置
一般写法:
1 | self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"nav_back"] style:UIBarButtonItemStyleDone target:self action:@selector(navigationBack)]; |
但是当navigationbar设置为image时,图片颜色的底色会变成蓝色,这时需要写成:
1 | UIImage *backImg = [[UIImage imageNamed:@"nav_back"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; |