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

Jam*_* Ku 9 ios swift

我的场景,我试图从UINavigationBar使用iOS 13 - Swift 5 中删除底线和阴影。在这里,在iOS 13 - Swift 5之前,我使用下面的代码在不改变导航栏颜色的情况下去除底线和阴影。现在,它没有显示NavigationBar颜色(我已经设置了条形颜色和背景颜色)也禁用了半透明。

代码:

UINavigationBar.appearance().shadowImage = UIImage()
UINavigationBar.appearance().setBackgroundImage(UIImage(), for: .default)
Run Code Online (Sandbox Code Playgroud)

如何解决这个问题?需要去除底线阴影,还想给 NavigationBar 颜色。

小智 10

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

let navBarAppearance = UINavigationBarAppearance()
navBarAppearance.configureWithOpaqueBackground()
navBarAppearance.shadowColor = .clear
navBarAppearance.shadowImage = UIImage()
navigationController?.navigationBar.standardAppearance = navBarAppearance
navigationController?.navigationBar.scrollEdgeAppearance = navBarAppearance
Run Code Online (Sandbox Code Playgroud)


ata*_*ati 6

如果您使用的是iOS 13,你无法通过设置去除阴影shadowImageUIImage()。您必须将 设置shadowColornilUIColor.clear


Saj*_*obi 6

Xcode 13 - iOS 15

对于 Xcode 13 并针对 iOS 版本 13 及更高版本,您可以使用以下代码:

 if #available(iOS 13.0, *) {
                let appearance = UINavigationBarAppearance()
                appearance.configureWithOpaqueBackground()
                appearance.backgroundColor = .red // Your color
                appearance.shadowColor = .clear
                appearance.shadowImage = UIImage()
                navigationController?.navigationBar.standardAppearance = appearance;
                navigationController?.navigationBar.scrollEdgeAppearance = navigationController?.navigationBar.standardAppearance

            }
Run Code Online (Sandbox Code Playgroud)


小智 2

尝试一下,我在 viewDidLoad 中添加了。这个对我有用。

self.navigationController?.navigationBar.shadowImage = UIImage()
Run Code Online (Sandbox Code Playgroud)