我有一个应用程序,有时需要它的导航栏融入内容。
有人知道怎么去掉或者改变这个烦人的小条的颜色吗?
在下图中,我说的是根视图控制器下面1px的高度线
我有一个应用程序,有时需要它的导航栏融入内容。
有人知道怎么去掉或者改变这个烦人的小条的颜色吗?
在下图中,我说的是根视图控制器下面1px的高度线
当前回答
Swift 4测试 单线解决方案
在Viewdidload () 将导航控制器的用户默认值设置为true
override func viewDidLoad() {
super.viewDidLoad()
self.navigationController?.navigationBar.setValue(true, forKey: "hidesShadow")
}
其他回答
下面是破解方法。因为它在关键路径上工作,将来可能会崩溃。但就目前而言,它的运作符合预期。
迅速:
self.navigationController?.navigationBar.setValue(true, forKey: "hidesShadow")
Objective - C:
[self.navigationController.navigationBar setValue:@(YES) forKeyPath:@"hidesShadow"];
适用于iOS 13+
窍门是用透明背景初始化'UINavigationBarAppearance'。然后,您可以轻松地删除导航栏的水平线。
let appearance = UINavigationBarAppearance()
appearance.configureWithTransparentBackground()
appearance.backgroundColor = .green // Required background color
最后,按照apple的建议将外观更改添加到导航项中。
self.navigationItem.standardAppearance = appearance
self.navigationItem.scrollEdgeAppearance = appearance
self.navigationItem.compactAppearance = appearance
我知道这是一个老话题,但我找到了一个非常有效的解决方案:
子类UINavigationBar。 在你的UINavigationBar子类中,用下面的代码重写didAddSubview:
- (void)didAddSubview:(UIView *)subview
{
[super didAddSubview:subview];
if ([subview isKindOfClass:[UIImageView class]]) {
[subview setClipsToBounds:YES];
}
}
也可以从故事板中隐藏(适用于Xcode 10.1)
通过添加运行时属性:hidshadow - Boolean - True
不使用navigationController?. navigationbar是非常重要的。setValue(true, forKey: " hidshadow ")因为在任何时候,苹果都可以删除" hidshadow "键路径。如果他们这样做,任何使用这个调用的应用程序都会崩溃。因为你没有访问类的直接API,所以这个调用会被App Store拒绝。
从iOS 13开始,为了确保效率,你可以做以下事情:
navigationBar.standardAppearance.shadowColor = nil