我有一个应用程序,有时需要它的导航栏融入内容。
有人知道怎么去掉或者改变这个烦人的小条的颜色吗?
在下图中,我说的是根视图控制器下面1px的高度线
我有一个应用程序,有时需要它的导航栏融入内容。
有人知道怎么去掉或者改变这个烦人的小条的颜色吗?
在下图中,我说的是根视图控制器下面1px的高度线
当前回答
我知道这是一个老话题,但我找到了一个非常有效的解决方案:
子类UINavigationBar。 在你的UINavigationBar子类中,用下面的代码重写didAddSubview:
- (void)didAddSubview:(UIView *)subview
{
[super didAddSubview:subview];
if ([subview isKindOfClass:[UIImageView class]]) {
[subview setClipsToBounds:YES];
}
}
其他回答
这里有一个不使用任何图像的方法,这是唯一适合我的方法:
self.navigationController.navigationBar.layer.shadowOpacity = 0;
不幸的是,您需要在每个不希望出现该行的文件上执行此操作。在appDelegate中没有办法这样做。
编辑:
设置shadowColor为nil是不需要的,这是你唯一需要的行。
斯威夫特4 //隐藏导航栏阴影线
navigationController?.navigationBar.shadowImage = UIImage()
你应该在UISearchBar的底部添加一个视图
let rect = searchController.searchBar.frame;
let lineView : UIView = UIView.init(frame: CGRect.init(x: 0, y: rect.size.height-1, width: rect.size.width, height: 1))
lineView.backgroundColor = UIColor.init(hexString: "8CC73E")
searchController.searchBar.addSubview(lineView)
快速做这件事的方法:
UINavigationBar.appearance().setBackgroundImage(UIImage(), for: .any, barMetrics: .default)
UINavigationBar.appearance().shadowImage = UIImage()
Swift 4测试 单线解决方案
在Viewdidload () 将导航控制器的用户默认值设置为true
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.navigationBar.setValue(true, forKey: "hidesShadow")
}