[绍棠] 定制iOS 中的导航栏和状态栏
2016-03-09 13:09
302 查看
更改导航栏的背景颜色
在iOS7,tintColor属性不能再用于设置栏的颜色。相反,使用barTintColor属性来改变背景颜色。您可以将下面的代码在didFinishLaunchingWithOptions:AppDelegate.m文件下。1 | [ [ 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的开始,并使用它来创建与任何RGB色彩你想要的任何的UIColor对象。下面是一个例子:
1 | [[UINavigationBar appearance] setBarTintColor:UIColorFromRGB(0x067AB5)]; |
要禁用半透明的属性,你可以简单地选择在xib的导航栏。在属性检查里面,取消半透明复选框,如下图。
在导航栏使用背景图片
如果您的应用程序使用了自定义图像作为栏的背景,你需要提供一个“更大”的图片,使其延伸了状态栏的后面。导航栏的高度是从44点(88像素)更改为64点(128像素)。你仍然可以使用了setBackgroundImage:方法来指定自定义图像的导航栏。下面是代码行设置背景图片:
[[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"nav_bg.png"] forBarMetrics:UIBarMetricsDefault];
例程捆绑了两种不同的背景图片:nav_bg.png和nav_bg_ios7.png。
vcC4sbO+sM28xqw=" class="aligncenter size-full wp-image-2553" src="http://www.2cto.com/uploadfile/Collfiles/20131208/Navigation-Bar-Background-Image.jpg"
/>
改变导航栏标题的字体
就像iOS 6,您可以通过使用导航栏的“titleTextAttributes”属性来自定义的文本样式。您可以指定字体,文字颜色,文字阴影颜色,文字阴影在文本标题偏移属性字典,使用下面的文本属性键:UITextAttributeFont - 字体
UITextAttributeTextColor - 文字颜色
UITextAttributeTextShadowColor - 文字阴影颜色
UITextAttributeTextShadowOffset - 偏移用于文本阴影
下面是示例代码片段改变的导航栏标题的字体样式:
NSShadow *shadow = [[NSShadow alloc] init]; shadow.shadowColor = [UIColor colorWithRed:0.0 green:0.0 blue:0.0 alpha:0.8]; shadow.shadowOffset = CGSizeMake(0, 1); [[UINavigationBar appearance] setTitleTextAttributes: [NSDictionary dictionaryWithObjectsAndKeys: [UIColor colorWithRed:245.0/255.0 green:245.0/255.0 blue:245.0/255.0 alpha:1.0], NSForegroundColorAttributeName, shadow, NSShadowAttributeName, [UIFont fontWithName:@"HelveticaNeue-CondensedBlack" size:21.0], NSFontAttributeName, nil]]; |
如果您更改该示例应用程序,导航栏中的标题看起来应该像这样:
自定义后退按钮的颜色
在iOS7,所有的栏按钮都是没编辑的的。你可以改变tintColor属性,它提供了一个快速和简单的方式,。下面是一个示例代码片段:1 | [[UINavigationBar appearance] setTintColor:[UIColor whiteColor]]; |
如果你想使用一个自定义图像来替换默认的字体,可以设置backIndicatorImage和backIndicatorTransitionMaskImage。
1 | [[UINavigationBar appearance] setBackIndicatorImage:[UIImage imageNamed:@"back_btn.png"]]; [[UINavigationBar appearance] setBackIndicatorTransitionMaskImage:[UIImage imageNamed:@"back_btn.png"]]; |
图像的颜色由tintColor属性控制。
使用图片作为导航栏标题
不想标题栏是光秃秃的文字?您可以通过使用代码行中的图像或标志取代它:1 | self.navigationItem.titleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"appcoda-logo.png"]]; |
添加多个栏按钮项目
同样,这个技巧是不是专门为iOS 7。,您希望添加导航栏的一侧不止一个栏按钮项目。无论是leftBarButtonItems和rightBarButtonItems 您在导航栏左侧/右侧指定自定义栏按钮项目。比如你想添加一个摄像头和一个共享按钮右侧的吧。您可以使用下面的代码:UIBarButtonItem *cameraItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action:nil];
NSArray *actionButtonItems = @[shareItem, cameraItem];
self.navigationItem.rightBarButtonItems = actionButtonItems;
下面是示例结果:
改变状态栏的风格
在旧版本的iOS,状态栏总是在黑色的风格,没有太多可以改变。与iOS 7的发布,你可以改变每个视图控制器状态栏的外观。您可以使用UIStatusBarStyle常量来指定状态栏的内容是否应该或深或浅。默认情况下,状态栏会显示暗的内容。换句话说,如时间,电池指示灯和Wi-Fi信号的项目显示为暗色。如果您使用的是深色背景在导航栏上,你最终会像这样:在这种情况下,你可能需要的状态栏的风格改变从暗到亮。有两种方法可以做到这一点。在iOS系统7,你可以控制从单个视图控制器通过覆盖preferredStatusBarStyle状态栏的样式:
-(UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}
对于示例应用程序,只要把上面的代码中RecipeNavigationController.m和状态栏和白得的内容。
上面介绍的方法是首选的方法来改变状态栏风格的iOS 7。或者,您也可以使用的UIApplication statusBarStyle方法设置状态栏的风格。但首先你需要选择退出““View controller-based status bar appearance”。根据项目目标的信息选项卡中,插入一个名为“View controller-based status bar appearance”新字符串并将其值设置为NO。
通过禁用“View controller-based status bar appearance”,您可以通过使用下面的代码设置状态栏的样式:
1 | [ [的UIApplication sharedApplication ] setStatusBarStyle : UIStatusBarStyleLightContent ] ; |
隐藏状态栏
在任何情况下,你要隐藏状态栏,可以覆盖prefersStatusBarHidden:在你的控制器:- (BOOL)prefersStatusBarHidden { return YES; } |
相关文章推荐
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 峰回路转,Firefox 浏览器即将重返 iOS 平台
- 不可修补的 iOS 漏洞可能导致 iPhone 4s 到 iPhone X 永久越狱
- iOS 12.4 系统遭黑客破解,漏洞危及数百万用户
- 每日安全资讯:NSO,一家专业入侵 iPhone 的神秘公司
- [转][源代码]Comex公布JailbreakMe 3.0源代码
- 用CSS开发时髦的导航栏图例教程
- jQuery实现下滑菜单导航效果代码
- jquery实现的仿天猫侧导航tab切换效果
- MFC对话框中添加状态栏的方法
- PHP的栏目导航程序
- jquery实现向下滑出的二级导航下滑菜单效果
- 基于jQuery实现以手风琴方式展开和折叠导航菜单
- JS+CSS实现六级网站导航主菜单效果
- 状态栏 时间显示效果 数字钟
- JS实现网页顶部向下滑出的全国城市切换导航效果
- 用CSS开发时髦的导航栏第二篇
- js实现显示当前状态的导航效果代码
- javascript实现当前页导航激活的方法