2个颜色不同的导航栏 ios_ios - 不同控制器导航栏颜色不同 - CSDN
  • 在每控制器的-(void)viewWillAppear:(BOOL)animated 中设置 -(void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; [self.navigationController.navigationBar setBarTintColor:[UIColor blu

    第一种方法

    • 在每个控制器的-(void)viewWillAppear:(BOOL)animated 中设置
    -(void)viewWillAppear:(BOOL)animated{
    
        [super viewWillAppear:animated];
        [self.navigationController.navigationBar setBarTintColor:[UIColor blueColor]];
    }
    • 这样有个缺点 有延迟 ,如图
      这里写图片描述

    第二种方法

    • 创建基类,设置一个navigationBar背景色属性,重写set方法,并在每个控制器中设置.
    //navigationController基类.h文件
    @interface HBBaseNavigationController : UINavigationController
    @property (strong, nonatomic) UIColor * barBackgroundColor;
    @end
    • 基类.m文件,实现set方法
    -(void)setBarBackgroundColor:(UIColor *)barBackgroundColor{
    
        self.navigationBar.backgroundColor = barBackgroundColor;
    }

    然后在每个控制器的-(void)viewWillAppear:(BOOL)animated 中实现如下方法:

    -(void)viewWillAppear:(BOOL)animated{
    
        [super viewWillAppear:animated];
        //基类
        HBBaseNavigationController * nav = (HBBaseNavigationController *)self.navigationController;
        nav.barBackgroundColor = [UIColor redColor];
    }

    为何必须在-(void)viewWillAppear:(BOOL)animated ?

    这里写图片描述
    * 原图分享链接: https://pan.baidu.com/s/1eSqPiaY

    展开全文
  • 局部导航栏颜色设置//设置导航条颜色 美团导航栏颜色 self.navigationController.navigationBar.barTintColor = [UIColor colorWithRed:78.0/255 green:238.0/255 blue:218.0/255 alpha:1.0];//设置导航条文字颜色 ...

    局部导航栏颜色设置

    //设置导航条颜色 美团导航栏颜色
        self.navigationController.navigationBar.barTintColor = [UIColor colorWithRed:78.0/255 green:238.0/255 blue:218.0/255 alpha:1.0];
    
    //设置导航条文字颜色 白色
     self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName:[UIColor whiteColor]};
    
    //设置按钮文字颜色 白色
    self.navigationController.navigationBar.setTintColor = [UIColor whiteColor]];

    全局导航栏颜色设置

    /*在 AppDelegate.m 中*/
    //设置导航条颜色 美团导航栏颜色
    [[UINavigationBar appearance] setBarTintColor:[UIColor colorWithRed:78.0/255 green:238.0/255 blue:218.0/255 alpha:1.0]];
    
    //设置导航条文字颜色 白色
    [[UINavigationBar appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor whiteColor]}];
    
    //设置按钮文字颜色 白色
    [[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
    
    //设置导航栏按钮字体大小
    [[UIBarButtonItem appearance] setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIFont boldSystemFontOfSize:15], UITextAttributeFont,nil] forState:UIControlStateNormal];

    更改状态栏颜色白色

    ===============2015.11.22=================
    突然发现了在General里面调节StatusBarStyle就可以了,这样还可以解决LaunchScreen.storyboard中状态栏颜色黑色的问题。
    scribe

    ==================Old===================
    * 首先在info.plist中添加一条UIViewControllerBasedStatusBarAppearance,值为NO
    * 再在程序里写下面的语句

    [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
    展开全文
  • ios上状态 就是指的最上面的20像素高的部分 状态分前后两部分,要分清这两概念,后面会用到: 前景部分:就是指的显示电池、时间等部分; 背景部分:就是显示黑色或者图片的背景部分; (一)设置statusBar...

    ios上状态栏 就是指的最上面的20像素高的部分
    状态栏分前后两部分,要分清这两个概念,后面会用到:

    前景部分:就是指的显示电池、时间等部分;
    背景部分:就是显示黑色或者图片的背景部分;

    (一)设置statusBar的【前景部分】

    简单来说,就是设置显示电池电量、时间、网络部分标示的颜色, 这里只能设置两种颜色:

    默认的黑色(UIStatusBarStyleDefault)
    白色(UIStatusBarStyleLightContent)
    可以设置的地方有两个:plist设置里面 和 程序代码里
    初始化设置:导航栏设置为不透明并给了"标题"与状态栏文字作对比

                       self.edgesForExtendedLayout = 0;
                       self.navigationItem.title = @"标题";

    只设置navigationBar不透明和写了一个标题.png


    改变状态栏的方法
    方法一:
    1、plist
    View controller-based status bar appearance 设置为 NO


    设置为NO.png


    2、代码设置

    [UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleLightContent;

    效果如下:


    状态栏白色.png


    方法二:
    1、plist
    View controller-based status bar appearance 设置为 YES 或者默认(不设置)
    注意:
    如果View controller-based status bar appearance为YES。
    则[UIApplication sharedApplication].statusBarStyle 无效。
    2、代码设置

    self.navigationController.navigationBar.barStyle = UIBarStyleBlack;

    状态栏导航栏文字都白色,背景黑色.png

    或者在控制器中重写 preferredStatusBarStyle方法,修改状态栏颜色

    - (UIStatusBarStyle)preferredStatusBarStyle {
    //    return UIStatusBarStyleLightContent;
        return UIStatusBarStyleDefault;
    }

    (二)设置statusBar的【背景部分】
    背景部分,简单来说,就是背景色;改变方法有两种:

    1、系统提供的方法

    navigationBar的setBarTintColor接口,用此接口可改变statusBar的背景色

    self.navigationController.navigationBar.barTintColor = [UIColor greenColor];

    纯粹的背景色设置,默认字体都是黑色.png

    如果想将状态栏和导航栏字体全变为白色,这样就行

    self.navigationController.navigationBar.barStyle = UIBarStyleBlack;

    此行代码能将状态栏和导航栏字体颜色全体改变,只能是黑色或白色.png


    如果只想改变导航栏的字体颜色,可以这样

    [self.navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor redColor]}];

    在默认显示的标题中直接修改文件的大小和颜色也是可以的.png


    还可以改变字体大小

    [self.navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor redColor],NSFontAttributeName:[UIFont systemFontOfSize:25]}];

    改变字体颜色大小.png


    或者可以设置背景图片

    [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@"image01"] forBarMetrics:UIBarMetricsDefault];

    图片背景.png


    2、另辟蹊径

    创建一个UIView,
    设置该UIView的frame.size 和statusBar大小一样,
    设置该UIView的frame.origin 为{0,-20},
    设置该UIView的背景色为你希望的statusBar的颜色,
    在navigationBar上addSubView该UIView即可。
    原理:
    状态栏区域相对于navigationBar的区域为

    {0,-20,self.view.bounds.size.width,20}

    除了改变状态栏的前景色(文字颜色,wifi颜色,时间颜色,电池颜色),就是改变背景色.由于状态栏区域上的控件是隐藏的,所以只要在状态栏区域被渲染了颜色,状态栏的背景颜色就跟着一起改变,从而改变了状态栏的背景颜色.

    UIView *statusBarView = [[UIView alloc]   initWithFrame:CGRectMake(0, -20,    self.view.bounds.size.width, 20)];
    statusBarView.backgroundColor = [UIColor greenColor];
    [self.navigationController.navigationBar addSubview:statusBarView];

    改变状态栏的背景颜色.png

    另外图片透明处理
    navigationBar为透明,注释掉self.edgesForExtendedLayout = 0;

    // self.edgesForExtendedLayout = 0;
     [self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault]
     self.navigationController.navigationBar.shadowImage = [UIImage new];

    图片透明设置.png


    作者:致id
    链接:http://www.jianshu.com/p/63f758796438
    來源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
    展开全文
  • iOS7下,默认导航栏背景,颜色是这样的,接下来我们就进行自定义,如果你仅仅是更改一下背景和颜色,代码会很简单,不需要很复杂的自定义View来替代leftBarItem 更改导航栏的背景和文字Color 方法一: ...


    在iOS7下,默认导航栏背景,颜色是这样的,接下来我们就进行自定义,如果你仅仅是更改一下背景和颜色,代码会很简单,不需要很复杂的自定义View来替代leftBarItem



    更改导航栏的背景和文字Color

    方法一:

        //set NavigationBar 背景颜色&title 颜色
        [self.navigationController.navigationBar setBarTintColor:[UIColor colorWithRed:20/255.0 green:155/255.0 blue:213/255.0 alpha:1.0]];
        [self.navigationController.navigationBar setTitleTextAttributes:[NSDictionary dictionaryWithObjectsAndKeys:[UIColor whiteColor],UITextAttributeTextColor,nil]];
    效果如下:

    我们把背景改成了蓝色,title文字改成了白色,是不是很简单呢?NavigationBar极其push过去的子页面也会是你修改后的背景颜色

    方法二:

        //设置NavigationBar背景颜色
        [[UINavigationBar appearance] setBarTintColor:[UIColor redColor]];
        //@{}代表Dictionary
        [[UINavigationBar appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor whiteColor]}];
    效果如下:



    在导航栏使用背景图片:

    如果您的应用程序使用了自定义图像作为栏的背景,你需要提供一个“更大”的图片,使其延伸了状态栏的后面。导航栏的高度现在是从44点(88像素)更改为64点(128像素)。
    仍然可以使用了setBackgroundImage:方法来指定自定义图像的导航栏。下面是代码行设置背景图片:

    [[UINavigationBar appearance] setBackgroundImage:[UIImage imageNamed:@"nav_bg.png"] forBarMetrics:UIBarMetricsDefault];
    

    效果图和上面的一样,我就不贴出来了。


    改变导航栏标题的字体

    就像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]];


    使用图片作为导航栏标题

    不想标题栏是光秃秃的文字?可以通过使用代码行中的图像或标志取代它:简单地改变titleview用来自定义,(适用于较低版本)

    self.navigationItem.titleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"appcoda-logo.png"]];

    效果如下,我随便用了个图片,别介意:



    添加多个栏按钮项目

    您希望添加导航栏的一侧不止一个栏按钮项目,无论是leftBarButtonItems和rightBarButtonItems 您在导航栏左侧/右侧指定自定义栏按钮项目。比如你想添加一个摄像头和一个共享按钮右侧的吧。您可以使用下面的代码:

        UIBarButtonItem *shareItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemAction target:self action: nil];
        UIBarButtonItem *cameraItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemCamera target:self action: nil];
        NSArray *itemsArr = @[shareItem,cameraItem];
        self.navigationItem.rightBarButtonItems = itemsArr;



    自定义后退按钮的文字和颜色

    通常情况下,我们使用UINavigationController时,push到的子页面,左上角会是系统自动取值上一层父页面的title名称,默认情况是这样,那么我们该如何修改它呢?


    左侧显示了父页面的title:用户登录,可是我们想修改成返回,方式有很多,举些例子

    方法一:

    通过设置navigationItem的backBarButtonItem可以直接更换文字,【注意,要在父视图的Controller中设置】如下:

        UIBarButtonItem *item = [[UIBarButtonItem alloc] initWithTitle:@"返回" style:UIBarButtonItemStylePlain target:nil action:nil];
        self.navigationItem.backBarButtonItem = item;
    效果如下:

    所有的子界面返回时都变成了我们定义的文字,如果不想显示文字,直接"",就会单独显示一个系统的返回箭头图标,也是很清晰的感觉。


    做到这里发现文字颜色和背景有重复,那么如何自定义其颜色呢?在iOS7,可以改变tintColor属性,它提供了一个快速和简单的方式,下面是一个示例代码片段:

    [[UINavigationBar appearance] setTintColor:[UIColor whiteColor]];
    效果如下:

    全是系统的图标和文字,这回看着舒服了,有木有?【除了后退按钮,请注意,tintColor属性影响所有按钮标题和按钮图像


    最后举个例子,另外一种实现自定义导航控制器返回按钮,代码如下:

         [self.navigationController.navigationBar setTitleTextAttributes:@{NSForegroundColorAttributeName: [UIColor redColor],NSFontAttributeName:[UIFont systemFontOfSize:19.0]}];
        
        self.title=[NSString stringWithFormat:@"第%lu页",(unsigned long)self.navigationController.viewControllers.count];
        
        //自定义返回按钮
        UIImage *backButtonImage = [[UIImage imageNamed:@"fanhui.png"] resizableImageWithCapInsets:UIEdgeInsetsMake(0, 30, 0, 0)];
        [[UIBarButtonItem appearance] setBackButtonBackgroundImage:backButtonImage forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
        //将返回按钮的文字position设置不在屏幕上显示
        [[UIBarButtonItem appearance] setBackButtonTitlePositionAdjustment:UIOffsetMake(NSIntegerMin, NSIntegerMin) forBarMetrics:UIBarMetricsDefault];

    效果如下:



    最后说一下使用pushViewController切换到下一个视图时,navigation controller按照以下3条顺序更改导航栏的左侧按钮(本段摘自网络):

    1、如果B视图有一个自定义的左侧按钮(leftBarButtonItem),则会显示这个自定义按钮;
    2、如果B没有自定义按钮,但是A视图的backBarButtonItem属性有自定义项,则显示这个自定义项;
    3、如果前2条都没有,则默认显示一个后退按钮,后退按钮的标题是A视图的标题;






    展开全文
  • iOS 导航栏颜色设置

    2017-07-10 14:06:15
    //设置返回按钮颜色  self.navigationController.navigationBar.tintColor = [UIColor ...//设置导航条背景颜色  self.navigationController.navigationBar.barTintColor = ThemeColor;   //
  • ios8 设置导航栏颜色

    2014-09-25 17:18:49
    self.navigationController.navigationBar.barTintColor =
  • iOS中设置导航栏标题的字体颜色和大小,有需要的朋友可以参考下。 在平时开发项目的时候,难免会遇到修改导航栏字体大小和颜色的需求,一般使用自定义视图的方法,其实还存在一种方法。 方法一:(自定义...
  • 自定义iOS7导航栏背景颜色以及返回按钮的设置 | 浏览:980 | 更新:2016-02-23 18:16 在iOS7.0下,导航栏的背景颜色是这样的,下面我们开始自定义设置 1.设置导航栏文字以及背景...
  •  所谓动态修改 意思是 在当前页面滚动的过程中 亦或 是在 触发返回事件\进入一新的页面 导航栏的动态变化 由于系统级别的navBar 高度集成 很多自己想实现的功能 很不好弄 如果是通过继承的话, 参见 category...
  • 导航栏透明有简单的方法,就是将一张透明的png图片设置为navgationBar的背景图片,但是这样做的话就不能动态调整其颜色了,下面我们来研究如何用代码来控制其颜色。 新建工程NavDemo 将根视图控制器设置为带...
  • iOS7以后导航栏按钮图片颜色会默认变成白色(不管原来图片是什么颜色)代码和效果如下 UIBarButtonItem *leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:image style:UIBarButtonItemStylePlain ...
  • 状态栏: 设为黑色风格:  [UIApplication sharedApplication].statusBarStyle = ...UIStatusBarStyleBlackOpaque;...导航栏:  [ self.navController.navigationBar setTintColor:[UIColor blackColor]];
  • 属性的时候,我们会发现颜色是有偏差的,是因为有一层毛玻璃效果视图,可以设置 self.navigationController.navigationBar.translucent = NO; 取消毛玻璃效果。但是设置后会发现视图下移的情况,是因为transluce...
  • IOS 更改导航栏背景、前景、标题及返回字体颜色)还有状态栏字体的颜色
  • iOS 修改导航栏背景色

    2018-12-05 20:55:36
    iOS 7 后,导航栏增加了 translucent 效果,这使得导航栏背景色的变化出现了两种情况: 1.translucent 属性值为 YES 的前提下,更改导航栏的背景色。 2.translucent 属性值为 NO 的前提下,更改导航栏的背景色...
  • Demo下载地址 ...但是这篇博客所写的文章和目前这篇原理差不多,都是在滑动时,根据滑动的Y值改变去改变导航颜色的alpha值,但是测试多次发现还是偶尔会浮现一些bug出来,因此优化了一下直接给UINavigationBa
  • 1) 在导航栏UINavigationBar中添加了两自定义的UIView,其中下层的view用来设置导航栏的背景色渐变,上层的view中添加一UILabel用来设置导航的标题,此UILabel的文字位置和导航栏的标题文字重合。 2) tableView...
  • self.navigationController.navigationBar.barTintColor = [UIColor blueColor];
  • 侧滑返回导航栏颜色变化
  • 有时候我们会遇到设置了导航栏颜色,但是显示的颜色与我们设置的色值有偏差,我们可以通过以下方法解决。 方法1: ``` - (void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; [self....
1 2 3 4 5 ... 20
收藏数 14,188
精华内容 5,675
关键字:

2个颜色不同的导航栏 ios