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 后退按钮在使用自定义字体时抱怨图标缩放