UINavigationBar 的添加改变了 UITabBar 的背景颜色

Posted

技术标签:

【中文标题】UINavigationBar 的添加改变了 UITabBar 的背景颜色【英文标题】:Addition of UINavigationBar has changed the background color of UITabBar 【发布时间】:2017-08-04 07:46:44 【问题描述】:

所以我正在构建一个选项卡式应用程序,并且该设计要求在某些应用程序页面上使用 UINavigationBar。将导航栏添加到我的一个选项卡式 ViewController 后,UITabBar 的颜色从最初设置的颜色(蓝绿色)变为灰色。我尝试在我的 AppDelegate 中设置 TabBar 背景颜色(在所有其他选项卡上都可以正常工作),我尝试在自定义 TabBar 视图控制器中本地设置它(根本不影响颜色),我什至尝试设置它在特定的 View Controller 本身中。我也尝试设置运行时属性无济于事。我不知道下一步该尝试什么。我已经在下面发布了代码和屏幕截图。

AppDelegate.swift

import Firebase
import UIKit
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate 

var window: UIWindow?



func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool 
    // Override point for customization after application launch.
    let myGreenBG = UIColor(colorLiteralRed: 43/255.0, green: 111/255.0, blue: 109/255.0, alpha: 1.0)

    FirebaseApp.configure()

    UITabBar.appearance().backgroundColor = myGreenBG

    UINavigationBar.appearance().backgroundColor = myGreenBG


    return true


...

TabBarViewController.swift 导入 UIKit

class tabBarViewController: UITabBarController 

override func viewDidLoad() 
    super.viewDidLoad()
    let myGreenBG = UIColor(colorLiteralRed: 43/255.0, green: 111/255.0, blue: 109/255.0, alpha: 1.0)

    //self.tabBar.delegate = self

    //Code to render the unselected images in the tab bar
    tabBar.backgroundColor = myGreenBG
    for items in 0 ..< tabBar.items!.count 
        let tabItemIndex = tabBar.items![items]
        tabItemIndex.image = tabItemIndex.image!.withRenderingMode(UIImageRenderingMode.alwaysOriginal)
        /*for tabBarItem in (self.tabBarController?.tabBar.items!)!
            if !(tabBarItem.
            
        */
    


override func didReceiveMemoryWarning() 
    super.didReceiveMemoryWarning()

    ...

正确显示

显示不正确

任何建议或提示将不胜感激!

【问题讨论】:

UITabBar.appearance().backgroundColor = UIColor(colorLiteralRed: 43/255.0, green: 111/255.0, blue: 109/255.0, alpha: 1.0) 在 vi​​ewWillApear 和 ViewWillDisappear 中试试这个以前的颜色 @JaydeepVyas 不幸的是,这不起作用。似乎将它设置为背景颜色意味着它存在但低于任何 NavBar 设置添加。正如 Abhishek 建议的那样,设置 barTintColor 似乎是唯一的方法 【参考方案1】:

试试下面的代码来改变 UITabBar 背景颜色-

UITabBar.appearance().barTintColor = UIColor.black

希望对你有帮助!

【讨论】:

这确实重置了颜色,尽管在我之前的示例中,使用 backgroundColor 属性导致它比使用 barTintColor 出现的阴影要亮得多。无论如何,我可以使用这个解决方案,所以谢谢!

以上是关于UINavigationBar 的添加改变了 UITabBar 的背景颜色的主要内容,如果未能解决你的问题,请参考以下文章

换日栏的哪个 UI 元素?

UINavigationBar改变了UIBarStyle,甚至认为UIBarStyle在UIAppearance中有所不同

UINavigationBar 中的 UISearchBar 在旋转方向时改变宽度

UINavigationController改变UINavigationBar导航条标题颜色跟字体

popViewControllerAnimated 改变 UINavigationBar 的 UIColor

UINavigationBar 的标题不会随着 push segue 的转换而改变