导航栏的自定义设置
导航栏的属性有的时候还是觉得有点乱, 所以自己总结下.
当然, 也还有些没搞清的地方:例如, self.navigationItem
self.navigationController.navigationBar
, 对导航栏的设置我们一般都是操控这两个的. 但是为什么同样是设置导航栏, 得分成这么两个层级, 不太清楚这里面的设计原理深层含义是什么. 最后自己的总结就是:item(像title left right back这种)设置就找 self.navigationItem
,其余别的找 self.navigationController.navigationBar
就好.
在load
方法中设置
//一次设置即可在app中生效
UINavigationBar *bar = [UINavigationBar appearanceWhenContainedIn:[self class], nil];
当然, 也不是所有属性都可以这么设置, 必须是在什么时加上了UI_APPEARANCE_SELECTOR
这个红的属性才可以.
设置导航栏背景颜色
self.navigationController.navigationBar.barTintColor = [UIColor greenColor];
设置导航栏背景图片
[self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"navi_bg_dark"] forBarMetrics:UIBarMetricsDefault];
设置导航栏标题属性
NSMutableDictionary *dict = [NSMutableDictionary dictionary];
dict[NSForegroundColorAttributeName] = [UIColor redColor];
self.navigationController.navigationBar.titleTextAttributes = dict;
//当然,还有可以直接设置titleView, 不过自己用的很少
self.navigationItem.titleView = [UIImage imagexxxx];
设置导航栏Item颜色
//如上图所示, 可以看到不仅更改了右侧文字的颜色, 还更改了左侧按钮图片的颜色
self.navigationController.navigationBar.tintColor = [UIColor orangeColor];
设置导航栏的按钮
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:[UIImage imageNamed:@"arrowLeft-gray"] style:UIBarButtonItemStylePlain target:nil action:nil];
self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"右侧按钮" style:UIBarButtonItemStylePlain target:nil action:nil];
//如上一例所示, 直接用图片设置成左侧按钮实际上是不太完美的, 你会发现图片稍微往右了点, 解决方案就是在初始化item的时候使用自定义view:新建一个view后把一个button包裹即可.这里就不具体贴代码了