您的位置:首页 > 移动开发 > IOS开发

在IOS7下自定义导航栏和状态栏

2013-11-18 18:09 369 查看
一、 改变NavigationBar 的颜色

在IOS7下,UINavigationBar 的 TintColor 已不再用于修改导航栏颜色了,取而代之的是以下代码

[[UINavigationBar appearance] setBarTintColor:[UIColor redColor]];

可以通过设置NavigationBar 的 translucent 为 YES ,使 NavigationBar 具有毛玻璃效果。
PS. 这会使NavigationBar的颜色发生一定量的改变,若想要精确按照视觉设计稿的颜色,可参照 http://www.imallen.com/blog/2013/10/22/how-to-set-bartintcolor-correctly-in-ios-7.html 来做。

二、改变NavigationBar 的背景图

在IOS7下,NavigationBar 的高度变高了,原先为44高度,在IOS7下由于状态栏的浮层化变成了64 高度,因此需要准备更高的背景图~

三、修改导航栏的TitleLabel样式

和之前的IOS6一样,我们可以通过 titleTextAttribute 这属性来修改标题的样式, 之前的 UITextAttributeTextColor 等Key 在IOS7 下作废了,换之的是 NSShadowAttributeName
等Key 。

四、修改返回按钮颜色

返回按钮在IOS7下也成为了个没有边缘的系统按钮样式,与之前一样,会显示上一页面的title或者返回,我们可以通过修改
NavigationBar 的 tintColor

来修改返回按钮的字体颜色

[[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];

当然这么做的话,整个导航栏的标题与按钮的风格都会改变的啦~(不过一般风格都得同意的吧 = =)
若想要具体到返回按钮,可以通过设置返回按钮的图像来自定义

[[UINavigationBar appearance] setBackIndicatorImage:[UIImage imageNamed:@"back_btn.png"]];
[[UINavigationBar appearance] setBackIndicatorTransitionMaskImage:[UIImage imageNamed:@"back_btn.png"]];

五、自定义标题栏的View
这个与之前版本类似,可通过修改 titleView 来实现
self.navigationItem.titleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"hehe.png"]];


六、修改Status Bar 样式
呵呵。

IOS7下StatusBar 不再是黑色的背景加白色的字和图标了,我们可以对其进行自定义。

一个App 默认的StatusBar 的元素都是黑色的,我们可以设置 UIStatusBarStyle
常量来修改它。

而在一个单独的ViewController里,我们可以重载这个方法

-(UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}

来修改StatusBarStyle。
而修改UIStatusBarStyle
常量的方法,首先我们需要将 info tab 里面的 View controller-based status bar appearance 设置为 NO

然后通过这行代码轻松愉快地修改:

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

七、隐藏StatusBar

IOS6下有个UINavigationController 中有个 setStatusBarHidden 的方法。

而IOS7 下 ,可以在ViewController 下重载下面这个方法解决

- (BOOL)prefersStatusBarHidden
{
return YES;
}

- - 完了,如果有什么问题欢迎指正~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  ios7 导航 statusBar