导航栏的自定义设置

导航栏的属性有的时候还是觉得有点乱, 所以自己总结下.

当然, 也还有些没搞清的地方:例如, 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包裹即可.这里就不具体贴代码了
posted @ 2016-03-21 20:16  iShao  阅读(561)  评论(0编辑  收藏  举报