我的场景中,我正在尝试使用 iOS 13-Swift 5 从UINavigationBar
删除底线和阴影。在 iOS 13-Swift 5 之前,我使用以下代码在不更改导航栏颜色的情况下删除底线和阴影。现在,它没有显示NavigationBar
的颜色(我已经设置了“条形颜色”和“背景颜色”)也禁用了Transulent。
代码:
UINavigationBar.appearance().shadowImage = UIImage()
UINavigationBar.appearance().setBackgroundImage(UIImage(), for: .default)
如何解决此问题?需要删除底线阴影,还希望提供NavigationBar颜色。
答案 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
设置为nil
或UIColor.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()