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

iOS 7 教程:定制iOS 7中的导航栏和状态栏

2013-12-29 13:28 337 查看




本文提供的代码需要用Xcode 5来执行。如果你还在使用老版本的Xcode,那么在运行示例之前请将Xcode升级到Xcode 5。


iOS 7中默认的导航栏

在开始定制之前,我们先来看看iOS 7中默认导航栏的外观。通过Xcode用
Single
View Controller
模板创建一个工程。然后将view controller嵌入到一个navigation controller中。

Xcode 5包含有iOS 6和iOS 7模拟器,我们可以在这两个不同的模拟器版本中运行示例程序,进行对比,如下图所示:





如上图所示,在iOS 7中的导航栏默认情况下跟状态栏是交织在一起的,并且它的颜色也被修改为亮灰色。


设置导航栏的背景颜色

在iOS 7中,不再使用tintColor属性来设置导航栏的颜色,而是使用barTintColor属性来修改背景色。我们可以在
AppDelegate.m
文件中的方法
didFinishLaunchingWithOptions:
里面添加如下代码来修改颜色:

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

效果如下图所示:





一般情况,我们都会使用自己的颜色,下面这个宏用来设置RGB颜色非常方便:
#define UIColorFromRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0]

将上面这个宏放到
AppDelegate.m
文件中,然后通过这个宏来创建一个UIColor对象(根据指定的RGB)。如下示例:

[[UINavigationBar appearance] setBarTintColor:UIColorFromRGB(0x067AB5)];

默认情况下,导航栏的translucent属性为YES。另外,系统还会对所有的导航栏做模糊处理,这样可以让iOS 7中导航栏的颜色更加饱和。如下图,是translucent值为NO和YES的对比效果:





要想禁用translucent属性,可以在Storyboard中选中导航栏,然后在Attribute Inspectors中,取消t
a57c
ranslucent的勾选。


在导航栏中使用背景图片

如果希望在导航栏中使用一个图片当做背景,那么你需要提供一个稍微高一点的图片(这样可以延伸到导航栏背后)。导航栏的高度从44 points(88 pixels)变为了64 points(128 pixels)。

我们依然可以使用
setBackgroundImage:
方法为导航栏设置自定义图片。如下代码所示:
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"nav_bg.png"] forBarMetrics:UIBarMetricsDefault];
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息