设置导航栏分隔符颜色IOS

Posted

技术标签:

【中文标题】设置导航栏分隔符颜色IOS【英文标题】:Set navigation bar separator color IOS 【发布时间】:2014-07-02 05:54:15 【问题描述】:

您好,我正在开发 ios 应用程序,在该应用程序中我尝试以不同方式设置导航栏分隔符颜色,但它不适合我。我尝试了以下方式:

[self.navigationController.navigationBar.layer setBorderWidth:2.0];// Just to make sure its working
[self.navigationController.navigationBar.layer setBorderColor:[[UIColor redColor] CGColor]];

使用上面我可以更改完整导航栏的边框颜色,但我只想更改分隔符颜色。

我尝试了另一种方法:

 UIView *navBorder = [[UIView alloc] initWithFrame:CGRectMake(0,navBarCont.navigationBar.frame.size.height,navBarCont.navigationBar.frame.size.width, 1)];

[navBorder setBackgroundColor:[UIColor colorWithWhite:255.0f/255.f alpha:0.1f]];
[navBorder setOpaque:YES];

[navBarCont.navigationBar addSubview:navBorder];

这种方法可以按我的意愿工作,但唯一的问题是当我旋转我的设备时,它不会因此而改变。这意味着如果我的设备最初处于纵向模式,它将以适当的宽度显示分隔符,但是一旦我将设备旋转到横向,它就不会根据该模式调整宽度。

所以我也尝试实现设备方向更改监听器

 [[NSNotificationCenter defaultCenter]
 addObserver:self
 selector:@selector(deviceOrientationDidChangeNotification:)
 name:UIDeviceOrientationDidChangeNotification
 object:nil];

 - (void)deviceOrientationDidChangeNotification:(NSNotification*)note

     [self setNavbar];

上述方法会导致一个问题,它不断添加分隔视图的子层。所以我现在有两个选择,一个是在添加的子视图上放置一些自动布局约束;或者第二个是每次删除旧子视图然后添加新的。但我不知道该怎么做。或者有什么简单的方法可以做到这一点?需要一些帮助。谢谢。

【问题讨论】:

【参考方案1】:

这不仅为任何颜色提供了解决方案,还为分隔符的高度提供了解决方案:

- (void)viewDidLoad

    [self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault];
    self.navigationController.navigationBar.shadowImage = [self imageWithColor:[UIColor redColor] size:(CGSizeMake(self.view.frame.size.width, 1.0f))];
    self.navigationController.navigationBar.translucent = YES;


- (UIImage*) imageWithColor:(UIColor*)color size:(CGSize)size

    UIGraphicsBeginImageContext(size);
    UIBezierPath* rPath = [UIBezierPath bezierPathWithRect:CGRectMake(0., 0., size.width, size.height)];
    [color setFill];
    [rPath fill];
    UIImage* image = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    return image;

【讨论】:

以上是关于设置导航栏分隔符颜色IOS的主要内容,如果未能解决你的问题,请参考以下文章

iOS - 设置导航栏之标题栏居中标题栏的背景颜色

iOS开发-设置导航栏title字体颜色

iOS开发-设置导航栏title字体颜色

IOS设置导航栏字体大小及颜色

iOS 更改状态栏导航栏颜色的几种方法

iOS 7中导航栏的默认背景颜色是什么?