美文网首页ios进阶技术iOS模块详解
iOS开发--一些UINavigationBar属性的设置

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

作者: 寒桥 | 来源:发表于2015-03-19 21:56 被阅读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中的设置

    相关文章

      网友评论

      • 小猪向天飞:你好,请问怎么解决NavigationBar的rightBarItem不能点击的问题?谢谢!
        寒桥:正常设置的话应该没问题的吧,导航条上加按钮很普通的一个功能,你那边代码是怎么写的大概?
      • DroisAndEthan:点个赞 拉倒学习笔记里面了
        寒桥:@阿飞的隐喻 :+1::+1:
      • 北极星的笔记:嗯,写作水平又提高了:smile:
      • dibadalu:如果能用markdown来放代码的话,阅读体验会上升几个级别。 :smiley: https://segmentfault.com/markdown
        寒桥:@dibadalu 嗯嗯 最新的几篇文章已经开始用了
      • 青春微凉来时路:第4个中 隐藏NavigationBar 如果 两个ViewController都隐藏了bar 从Apush 到B 顶部 会有bug 感觉有个 Bar在后面闪过
        DreamBuddy:@青春微凉来时路 http://www.jianshu.com/p/1d1e20581624 我似乎是解决了这个bug 请移步这里
        青春微凉来时路:@iOS胖码农 有一个方法闪现可以解决 但是 会出现bar上的title错乱的bug 还好我们现在 app给加上了bar 不开了这个问题
        DreamBuddy:@青春微凉来时路 请问,解决了吗
      • 042a0e1be73f:不错,学习啦!谢谢!

      本文标题:iOS开发--一些UINavigationBar属性的设置

      本文链接:https://www.haomeiwen.com/subject/uzewxttx.html