ios进阶技术iOS模块详解

iOS开发--一些UINavigationBar属性的设置

2015-03-19  本文已影响17617人  寒桥

1.iOS7之后 要想改变navigationbar的颜色 可以这样子改

self.navigationController.navigationBar.barTintColor = [UIColor colorWithHexString:@"#3A3A3A" alpha:1.0f];

默认带有一定透明效果,可以使用以下方法去除系统效果

[self.navigationController.navigationBar setTranslucent:NO];

改变navigationbar的颜色

2.改变UINavigationBar导航条标题颜色和字体

iOS 5 以后 UINavigationController 可以 改变UINavigationBar导航条标题颜色和字体

[self.navigationController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor colorWithRed:0 green:0.7 blue:0.8 alpha:1], NSForegroundColorAttributeName,[UIColor colorWithRed:0 green:0.7 blue:0.8 alpha:1],NSShadowAttributeName,[NSValue valueWithUIOffset:UIOffsetMake(0, 0)], NSShadowAttributeName,[UIFont fontWithName:@"Arial-Bold" size:0.0], NSFontAttributeName,nil]];

改变UINavigationBar导航条标题颜色和字体

其中 NSForegroundColorAttributeName和NSFontAttributeName 属性是文字颜色和字体

3.改变状态栏的颜色

公司项目需要将状态栏的文字颜色设置为白色,以下方法即可

[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];

改变后需要及时刷新的调用

[viewController setNeedsStatusBarAppearanceUpdate];

如果没有效果,需要在plist文件里设置

View controller-based status bar appearance  = NO

info.plist中 View controller-based status bar appearance这个属性 View controller-based status bar appearance =NO 这个设置为:View Controller 不对status Bar 显示进行操作

4.在某些页面控制navigationbar不显示

在项目中有时候会遇到在有些页面想隐藏navgationbar的情况,只要像这样写就可以了

隐藏导航条代码示例

- (void)viewWillAppear:(BOOL)animated {

[super viewWillAppear:animated];

[self.navigationController setNavigationBarHidden:YES animated:animated];

}

- (void)viewWillDisappear:(BOOL)animated {

[super viewWillDisappear:animated];

[self.navigationController setNavigationBarHidden:NO animated:animated];

}

5.图片选择器调用时候有关导航条的问题

有时候调用系统相册的时候,如果我们整体导航条背景颜色是通过一张图片进行加载的话 那么相册调用出来后,导航条的颜色也是会加载这张图片的,但是如果整条导航填颜色是通过颜色色值来加载的话,这时候系统相册调用出来的颜色就是系统默认的,导致白色导航条,白色文字就会显示不出来,从而影响用户体验;还有一种情况是,调用系统相册之后,导航条上的文字,和取消按钮都是显示的英文,跟我们整体风格格格不入,因此我们需要重写相册导航条上的内容、图片和文字以及文字颜色.

(1)如果整体导航条是按照色值来的,修改方法

实现UINavigationDelegate方法

// 实现navigationController的代理

- (void)navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated

{

viewController.navigationController.navigationBar.barTintColor = MainAppColor;

[viewController.navigationController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor], NSForegroundColorAttributeName,[UIFont fontWithName:@"Helvetica Neue" size:19.0f], NSFontAttributeName,nil]];

viewController.navigationItem.rightBarButtonItem.tintColor = [UIColor whiteColor];

}

(2)如果显示出来的是英文 我们想改成中文的

代理方法实现

在调用系统相册、相机发现是英文的系统相簿界面后标题显示“photos”,但是手机语言已经设置显示中文,在info.plist设置解决问题  info.plist里面添加Localized resources can be mixed YES 表示是否允许应用程序获取框架库内语言。

info.plist中的设置
上一篇下一篇

猜你喜欢

热点阅读