首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >改变NavigationBar在iOS15中的当前颜色

改变NavigationBar在iOS15中的当前颜色
EN

Stack Overflow用户
提问于 2021-09-30 14:32:39
回答 1查看 1.6K关注 0票数 2

我有一个自定义颜色主题的应用程序,主题可以在TableView标题标签和导航栏中实现颜色。

在这样做的时候,它在iOS14中运行得很好。但是随着iOS15的改变,导航栏不能再改变颜色了。透明和scrollEdgeAppearance是在iOS15中处理的,但是在应用程序运行(在应用程序(DidFinisLaunching)被调用后)时,基于用户输入的NavBar当前颜色变化是不起作用的。

当用户选择颜色时,我使用下面的代码触发:

代码语言:javascript
复制
 func setNavBarColour() {
        if #available(iOS 15, *) {
            let appearance = UINavigationBarAppearance()
            appearance.configureWithOpaqueBackground()
            appearance.titleTextAttributes = [NSAttributedString.Key.foregroundColor: UIColor.white]
            appearance.backgroundColor = LangBuilds.flavColor
            let proxy = UINavigationBar.appearance()
            proxy.tintColor = LangBuilds.flavColor
            proxy.standardAppearance = appearance
            proxy.scrollEdgeAppearance = appearance
        }
        else {
            self.navigationController?.navigationBar.barTintColor = LangBuilds.flavColor
        }
        self.searchController.searchBar.searchTextField.textColor = .black
        self.searchController.searchBar.searchTextField.backgroundColor = .white
        self.searchController.searchBar.searchTextField.autocapitalizationType = .none
        changeTextHolder()
    }

谢谢你提前帮忙。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-09-30 14:37:39

应用程序运行时(在应用程序(DidFinisLaunching)被调用后)运行时,基于用户输入的NavBar当前颜色变化不起作用。

在导航栏使用appearance代理显示时,不能更改该导航栏的颜色。appearance代理只影响未来的接口元素。您需要将UINavigationBarAppearance直接应用于现有的导航栏。

代码语言:javascript
复制
self.navigationController?.navigationBar.standardAppearance = appearance
self.navigationController?.navigationBar.scrollEdgeAppearance = appearance
票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/69394073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档