使用UINavigationBarAppearance()时,NavigationBar颜色更改不会传递到其他视图是因为UINavigationBarAppearance()只能应用于当前视图控制器的导航栏,而不会自动传递到其他视图控制器。
UINavigationBarAppearance()是UIKit框架中的一个类,用于自定义导航栏的外观。通过该类,可以设置导航栏的背景颜色、标题颜色、按钮颜色等。但是,当导航栏的外观发生变化时,其他视图控制器的导航栏并不会自动应用这些变化。
要实现导航栏颜色的传递,可以通过以下几种方式:
override func viewDidLoad() {
super.viewDidLoad()
let appearance = UINavigationBarAppearance()
appearance.backgroundColor = .red
navigationController?.navigationBar.standardAppearance = appearance
navigationController?.navigationBar.scrollEdgeAppearance = appearance
}
class NavigationBarAppearanceManager {
static let shared = NavigationBarAppearanceManager()
private init() {}
func setNavigationBarAppearance() {
let appearance = UINavigationBarAppearance()
appearance.backgroundColor = .red
let navigationController = UIApplication.shared.keyWindow?.rootViewController as? UINavigationController
navigationController?.navigationBar.standardAppearance = appearance
navigationController?.navigationBar.scrollEdgeAppearance = appearance
}
}
在每个视图控制器中,调用NavigationBarAppearanceManager.shared.setNavigationBarAppearance()
来设置导航栏的外观。
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
let appearance = UINavigationBarAppearance()
appearance.backgroundColor = .red
let navigationController = UINavigationController()
navigationController.navigationBar.standardAppearance = appearance
navigationController.navigationBar.scrollEdgeAppearance = appearance
window?.rootViewController = navigationController
window?.makeKeyAndVisible()
return true
}
通过以上方式,可以实现导航栏颜色的传递到其他视图控制器。对于腾讯云相关产品和产品介绍链接地址,可以根据具体需求选择适合的云服务产品,例如云服务器、云数据库、云存储等。具体的产品介绍和链接地址可以参考腾讯云官方文档。
领取专属 10元无门槛券
手把手带您无忧上云