SwiftUI 移除 NavigationBar 底部边框

Posted

技术标签:

【中文标题】SwiftUI 移除 NavigationBar 底部边框【英文标题】:SwiftUI Remove NavigationBar Bottom Border 【发布时间】:2019-10-18 00:49:35 【问题描述】:

在使用 SwiftUI 时如何去除导航栏底部 1px 边框?

【问题讨论】:

【参考方案1】:

在 View 的初始化程序中,您可以设置导航栏的外观。在那里你必须将.shadowColor 属性设置为.clear

init() 
    let appearance = UINavigationBarAppearance()
    appearance.shadowColor = .clear
    UINavigationBar.appearance().standardAppearance = appearance
    UINavigationBar.appearance().scrollEdgeAppearance = appearance

【讨论】:

不再适用于 Xcode 13.2 和 ios 15【参考方案2】:

我也遇到过这个问题。这是几乎相似的post

但大多数答案都有副作用。对我来说,最好的解决方案是这个

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

并且还希望将 UIImage() 而不是“nil”设置为 shadowImage 和 bacgroundImage。我将导航 displayMode 设为内联

.navigationBarTitle(Text(""), displayMode: .inline)

【讨论】:

【参考方案3】:

这对我有用

UINavigationBar.appearance().shadowImage = UIImage()

【讨论】:

这只是重复其他答案所说的话。喜欢this answer 的第一行或this one 的第三行。【参考方案4】:

SwiftUI,1 行。

UINavigationBar.appearance().standardAppearance.shadowColor = .clear

我在 .onAppear 中实现了它

【讨论】:

【参考方案5】:

在 Xcode 12.4 中,这是对我有用的组合:

init() 
    UINavigationBar.appearance().shadowImage = UIImage()
    UINavigationBar.appearance().setBackgroundImage(UIImage(), for: .default)
    UINavigationBar.appearance().isTranslucent = false
    UINavigationBar.appearance().barTintColor = UIColor.red

【讨论】:

以上是关于SwiftUI 移除 NavigationBar 底部边框的主要内容,如果未能解决你的问题,请参考以下文章

当视图在 SwiftUI 中消失时如何隐藏 NavigationBar?

如何在 SwiftUI 中隐藏额外的 NavigationBar

在 NavigationLink 之后,在 NavigationView 内、TabView 内显示 NavigationBar。 SwiftUI

SwiftUI NavigationBar 后退按钮在使用自定义字体时抱怨图标缩放

SwiftUI-NavigationLink中的NavigationBar在视图中迅速显示然后消失

SwiftUI:模式关闭后导航栏中的按钮不会触发