Swift UINavigation底线和阴影删除,而无需更改导航栏颜色

时间:2019-07-09 13:42:29

标签: ios swift

我的场景中,我正在尝试使用 iOS 13-Swift 5 UINavigationBar删除底线和阴影。在 iOS 13-Swift 5 之前,我使用以下代码在不更改导航栏颜色的情况下删除底线和阴影。现在,它没有显示NavigationBar的颜色(我已经设置了“条形颜色”和“背景颜色”)也禁用了Transulent。

代码:

UINavigationBar.appearance().shadowImage = UIImage()
UINavigationBar.appearance().setBackgroundImage(UIImage(), for: .default)

如何解决此问题?需要删除底线阴影,还希望提供NavigationBar颜色。

6 个答案:

答案 0 :(得分:7)

对我来说,它仅在更改以下(> = iOS13)后才有效

let navBarAppearance = UINavigationBarAppearance()
navBarAppearance.configureWithOpaqueBackground()
navBarAppearance.shadowColor = .clear
navBarAppearance.shadowImage = UIImage()
navigationController?.navigationBar.standardAppearance = navBarAppearance
navigationController?.navigationBar.scrollEdgeAppearance = navBarAppearance

答案 1 :(得分:2)

如果您使用的是iOS 13,则无法通过将shadowImage设置为UIImage()来消除阴影。您必须将shadowColor设置为nilUIColor.clear

答案 2 :(得分:0)

尝试一下,我添加了viewDidLoad。它对我有用。

self.navigationController?.navigationBar.shadowImage = UIImage()

答案 3 :(得分:0)

以下为我工作的代码

UINavigationBar.appearance().setBackgroundImage(UIImage(), for: UIBarMetrics.default)
UINavigationBar.appearance().shadowImage = UIImage()
UINavigationBar.appearance().isTranslucent = false
UINavigationBar.appearance().barTintColor = #colorLiteral
UINavigationBar.appearance().titleTextAttributes = [NSAttributedString.Key.foregroundColor : UIColor.white]

答案 4 :(得分:0)

如果要使用UINavigationBarAppearance,可以这样做。

let appearance = UINavigationBarAppearance()
appearance.configureWithDefaultBackground()
appearance.shadowImage = UIImage()
appearance.shadowColor = UIColor.clear
appearance.backgroundImage = UIImage()
appearance.backgroundColor = UIColor.white
UINavigationBar.appearance().scrollEdgeAppearance = appearance

答案 5 :(得分:0)

这似乎适用于iOS13和Swift

let barAppearance = UINavigationBarAppearance()
barAppearance.configureWithTransparentBackground()