我遇到与线程here相同的问题。我可以通过将文本设为白色来设置状态栏可见,但这不是我的目标。我也想在酒吧的顶部上色,就像所有的导航栏一样。我已经能够通过在layoutSubviews下添加我想要的视图形状来实现这一点,但是这样您就无法进行交互或查看UINavigationItem。代码:
- (void)drawRect:(CGRect)rect {
[super drawRect:rect];
CGContextRef context = UIGraphicsGetCurrentContext();
[[UIColor yellowColor] setFill];
UIRectFill(rect);
结果如下:
这是使用drawRect可以实现的韧皮:
如果你在layoutSubviews下执行此操作:
如您所见,后面的文字,箭头都丢失了。所以我真的在寻找一种让drawRect工作的方法!在此先感谢您的帮助!
答案 0 :(得分:1)
首先,使用以下命令将navBar设置为隐藏:
navController.navigationBar.translucent = true
navController.navigationBar.setBackgroundImage(UIImage(), forBarMetrics: .Default)
navController.navigationBar.shadowImage = UIImage()
navController.navigationBar.backgroundColor = UIColor.clearColor()
在storyboard或xib中创建一个视图并在VC中创建属性,然后将其添加到:
navController.view.insertSubview(navBarView, belowSubview: (navigationController?.navigationBar)!)
之后,您的子视图应显示在条形按钮后面,它可以与您的自定义navBarView
一起正常工作,但请记住删除navBarView
并在视图消失时将navBar恢复为默认值:
navController.navigationBar.translucent = false
navController.navigationBar.shadowImage = nil
navController.navigationBar.setBackgroundImage(nil, forBarMetrics: .Default)
navController.navigationBar.backgroundColor = UIColor.whiteColor()