我在運行 xcode 14 和 ios 16 時遇到了一些問題。
導航欄不變色,Tab Bar 與背景顏色相同(我認為應該有不同的色調)。
class MainTabController: UITabBarController {
// MARK: - Properties
// MARK: - Lifecycle
override func viewDidLoad() {
super.viewDidLoad()
configureViewControllers()
}
// MARK: - Helpers
func configureViewControllers() {
let feed = FeedController()
let nav1 = templateNavigationController(image: UIImage(named: "home_unselected"), rootViewController: feed)
let explore = ExploreController()
let nav2 = templateNavigationController(image: UIImage(named: "search_unselected"), rootViewController: explore)
let notifications = NotificationsController()
let nav3 = templateNavigationController(image: UIImage(named: "search_unselected"), rootViewController: notifications)
let conversations = ConversationsController()
let nav4 = templateNavigationController(image: UIImage(named: "search_unselected"), rootViewController: conversations)
viewControllers = [nav1, nav2, nav3, nav4]
}
func templateNavigationController(image: UIImage?, rootViewController: UIViewController) -> UINavigationController {
let nav = UINavigationController(rootViewController: rootViewController)
nav.tabBarItem.image = image
nav.navigationBar.barTintColor = .white
return nav
}
}

我試過設定導航欄的外觀:
let appearance = UINavigationBarAppearance()
appearance.configureWithOpaqueBackground()
appearance.backgroundColor = .white
nav.navigationBar.standardAppearance = appearance
nav.navigationBar.scrollEdgeAppearance = nav.navigationBar.standardAppearance
這似乎有點多余,您是否必須每次為每個導航控制器都這樣做?
uj5u.com熱心網友回復:
不,您不必為每個導航控制器執行此操作。
您可以擴展UINavigationBar.
extension UINavigationBar {
static func create() {
let navBarAppearance = UINavigationBarAppearance()
navBarAppearance.configureWithOpaqueBackground()
navBarAppearance.backgroundColor = .white
appearance().standardAppearance = navBarAppearance
appearance().scrollEdgeAppearance = navBarAppearance
appearance().compactAppearance = navBarAppearance
}
}
并UINavigationBar.create()從您的電話application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool
類似的方法可以用于UITabBar
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/526698.html
