gpt4 book ai didi

ios - 如何调试 navigationcontroller.tintColor 不改变?

转载 作者:搜寻专家 更新时间:2023-11-01 06:00:40 26 4
gpt4 key购买 nike

出于某种原因,我不明白为什么我无法在我的应用程序中更改导航栏按钮的 tintColor,而且我不知道如何找出原因。你能推荐我如何调试这个问题吗?

我正在将其添加到我的 View Controller 的 viewDidLoad 中:

UINavigationBar.appearance().tintColor = .green

但是,没有任何变化,后退按钮和 Aa 栏按钮保持默认的灰色。

导航栏和状态栏是半透明的,在整个应用程序中都位于 viewcontroller 的背景色之上。

我可以在测试应用程序中将 barbutton 更改为 .green,我在其中执行完全相同的操作(将其添加到 vc 的 ViewDidLoad,确保将 barbutton 图像 Assets 设置为 Template所以它们会呈现我设置的颜色)。但无论出于何种原因,同样的事情不会在我的应用程序原型(prototype)中改变。

是否有任何我可能不知道的常见原因?

添加:栏按钮仅通过 Storyboard添加。

这里是尝试通过 1 个 View Controller 的 viewDidLoad 更改其颜色的代码:

Class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()

UINavigationBar.appearance().tintColor = .green
}

override func viewWillAppear(_ animated: Bool) {
super.viewWillAppear(animated)
self.navigationController?.navigationBar.setBackgroundImage(UIImage(), for: .default)
self.navigationController?.navigationBar.shadowImage = UIImage()
self.navigationController?.navigationBar.isTranslucent = true
}

}

最佳答案

如果你想使用全局 appearance() 代理,那么你不能在你的 View Controller 中使用它。

如果你想在 View Controller 的 viewDidLoad 中更改 tintColor,那么你必须直接在 Controller 的 navigationController 实例上设置它:

navigationController?.navigationBar.tintColor = .green

要使用 appearance() 代理,并为导航栏设置全局 tintColor,您必须在初始化导航 Controller 之前执行此操作。

例如,如果您在应用委托(delegate)的 application(_:didFinishLaunchingWithOptions:) 中执行此操作,它将起作用:

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
UINavigationBar.appearance().tintColor = .green
return true
}

请参阅 UIAppearance 文档以了解详细信息:

https://developer.apple.com/documentation/uikit/uiappearance

“iOS 在 View 进入窗口时应用外观更改,它不会更改已经在窗口中的 View 的外观。要更改当前在窗口中的 View 的外观,请从 View 中删除 View 层次结构,然后把它放回去。”

关于ios - 如何调试 navigationcontroller.tintColor 不改变?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52269294/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com