将 isTranslucent 设置为 false 并与 NavigationView 结合使用时,选项卡式视图出现一些问题。
有人知道如何解决此问题吗?问题显示在所附图像中。
我需要将半透明设置为false,否则无法获得深色。
答案 0 :(得分:1)
您可以设置backgroundColor。不要将isTranslucent设置为false,否则会创建您提到的这些伪像。
UITabBar.appearance().backgroundColor = .black
UINavigationBar.appearance().backgroundColor = .black
它变得更暗。但是它并不完全不透明。
编辑:刚刚观看了更新iOS 13的UI的方法:
TabView和NavigationView实际上是用于旧版UITabBarController和UINavigationController的UIHostedController:
let appearance = UITabBarAppearance()
appearance.configureWithOpaqueBackground()
appearance.titleTextAttributes = [.foregroundColor: UIColor.white]
appearance.largeTitleTextAttributes = [.foregroundColor: UIColor .white]
然后将外观设置为各种外观。
tabBar.standardAppearance = appearance
第二次编辑:
extension UINavigationController {
override open func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
let appearance = UINavigationBarAppearance()
appearance.configureWithOpaqueBackground()
navigationBar.standardAppearance = appearance
navigationBar.compactAppearance = appearance
navigationBar.scrollEdgeAppearance = appearance
}
}
extension UITabBarController {
override open func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
let appearance = UITabBarAppearance()
appearance.configureWithOpaqueBackground()
tabBar.standardAppearance = appearance
}
}
应该有一种更干净的方法来同时访问tabBar和navBar。
答案 1 :(得分:0)
我在 SwiftUI 中使用了 UIKit。我的标签栏是在故事板中创建的,但我获得额外底部空间的视图是您提到的 swiftui 视图。我尝试了上述所有解决方案,但没有任何效果。
我使用 Xcode 12.4 进行开发。我的解决方案是在故事板中将 Translucent 标记为 true 并且底部额外的灰色条消失了。
答案 2 :(得分:0)
只需在这样的扩展程序中自定义它:
extension UITabBarController {
override open func viewDidLoad() {
super.viewDidLoad()
let appearance = UITabBarAppearance()
appearance.backgroundColor = .black
tabBar.standardAppearance = appearance
}
}
注意被覆盖的函数必须是viewDidLoad()
。至少当它是 viewDidAppear(:)
函数时它对我不起作用。
答案 3 :(得分:-2)
比这一切都容易,只需删除下一行:
UITabBar.appearance().isTranslucent = false