1、页面起始点
//修改了这个外观对象就相当于修改了整个项目的外观
UINavigationBar *bar = [UINavigationBar appearance];
bar.barTintColor = [mnResource navBarTintColor];
ios7之后如上设置导航栏背景色之后,默认app导航栏是透明状态,页面起始点从(0,0)开始,也就是说添加一个(0,0,320,64)大小的视图在self.view上会被导航栏遮盖
但是把滚动视图作为第一个视图添加到页面上,默认开启
self.automaticallyAdjustsScrollViewInsets = YES;
滚动视图的显示会通过计算状态栏导航栏的显示情况来偏移相应的位置;
假如状态栏显示,导航栏隐藏向下偏移20,
状态栏隐藏,导航栏显示偏移44,两者都显示偏移64,都隐藏则不偏移
假如通过设置背景图片的方法来设置导航栏颜色:
[bar setBackgroundImage:[mnResource imageWithColor:[mnResource navBarTintColor] andSize:CGSizeMake(1, 64)] forBarMetrics:UIBarMetricsDefault];
导航栏会不透明,页面起始点会从(0,64)开始
2、不同页面设置不同的导航栏颜色
在最开始的页面设置了barTintColor属性之后,在其他页面再次设置是不生效的
但是以下方法会生效:
- (void)setBarColor:(UIColor *)color
{
[self.navigationController.navigationBar setBackgroundImage:[mnResource imageWithColor:color andSize:CGSizeMake(1, 64)] forBarMetrics:UIBarMetricsDefault];
}
设置之后页面起始点就会变成(0,64)