簡體   English   中英

無法將顏色更改為 tabBar?

[英]Unable to change the color to tabBar?

我在 parantTabBarController class 中有以下方法: 可以看到使 tabBar 完全透明的各種嘗試。 唯一有效的是在頂部找到的那個。

       override func viewDidLoad() {
        super.viewDidLoad()

        UITabBar.appearance().barTintColor = UIColor.clear
        UITabBar.appearance().backgroundImage = UIImage()
//        UITabBar.appearance().barTintColor = UIColor.blue

//        changeTabBarOpacity()
//        self.tabBar.unselectedItemTintColor = UIColor(red: 17.0/255.0, green: 70.0/255.0, blue: 95.0/255.0, alpha: 0.4)
//        self.tabBar.backgroundColor = UIColor(red: 17.0/255.0, green: 70.0/255.0, blue: 95.0/255.0, alpha: 0.0)

//        self.tabBar.backgroundColor = UIColor.clear
//        self.tabBar.backgroundImage = UIImage()
//        self.tabBar.shadowImage = UIImage()  // removes the border

    }

但是,使用這種方法,我無法在其他視圖控制器中更改同一 tabBar 的背景顏色。 我嘗試用白色圖像替換圖像,更改背景顏色: UITabBar.appearance().backgroundColor = UIColor.white但沒有任何效果。

我怎樣才能在一個頁面上有一個半透明的 tabBar 而在所有其他頁面上有一個白色的?

@isa123 在 appdelegate didFinishLaunchingWithOptions 方法中嘗試此代碼

  UITabBar.appearance().tintColor = .white
  UITabBar.appearance().barTintColor = UIColor(named: "PrimaryDark")
  UITabBar.appearance().isOpaque = false
  UITabBar.appearance().backgroundImage = UIImage.init(color: UIColor(named: "PrimaryDark")!, size: CGSize(width: 1, height: 1))

Swift 5:

好的,我找到了解決方案,主要是使用UITabBarisTranslucent屬性。

  • 如果您將 isTranslucent: true 發送到具有不透明自定義背景圖像的選項卡欄,則選項卡欄將對圖像應用小於 1.0 的系統不透明度。

如果您想設置清晰的顏色,那么您只需將isTranslucent設置為 true。 如果您想應用其他 colors 則將isTranslucent設置為 false。

使用下面的 TabBarViewController class 到您的 TabBarViewController


    class TabBarViewController: UITabBarController, UITabBarControllerDelegate {
    
        override func viewDidLoad() {
            super.viewDidLoad()
            self.delegate = self
            
            self.tabBar.isTranslucent = true
            UITabBar.appearance().backgroundImage = UIImage()
            
            //This is for removing top line from the tabbar.
            UITabBar.appearance().layer.borderWidth = 0.0
            UITabBar.appearance().clipsToBounds = true
        }
    
       // This method will get called when you tap on any tab
        func tabBarController(_ tabBarController: UITabBarController, shouldSelect viewController: UIViewController) -> Bool {
            
            if viewController == tabBarController.viewControllers?[0] { //<----- This is first viewController
                
                //If you set isTranslucent to true then no need to set barTintColor. it will make your tabBar transparent
                self.tabBar.isTranslucent = true
                
            } else if viewController == tabBarController.viewControllers?[1] { //<----- This is second viewController
                
                self.tabBar.isTranslucent = false
                
               // the tab bar will provide an opaque background black for UIBarStyleBlack or white for UIBarStyleDefault if barTintColor is nil.
                self.tabBar.barTintColor = .white
                
                // OR
                
              //  self.tabBar.barTintColor = nil
                
            } else {
                self.tabBar.isTranslucent = false
                self.tabBar.barTintColor = .red
            }
            return true
        }
    }

Output:-

在此處輸入圖像描述

在此處輸入圖像描述

在此處輸入圖像描述

希望這可以幫助

我使用此代碼在 UITabBarController 的自定義子類中配置選項卡欄。 它支持 iOS 15 和 XCode 13 更新。

let backgroundColor = UIColor.red
let selectedItemTextColor = UIColor.black
let unselectedItemTextColor = UIColor.white

if #available(iOS 15, *) {
    let tabBarAppearance = UITabBarAppearance()
    tabBarAppearance.backgroundColor = backgroundColor
    tabBarAppearance.stackedLayoutAppearance.selected.titleTextAttributes = [.foregroundColor: selectedItemTextColor]
    tabBarAppearance.stackedLayoutAppearance.normal.titleTextAttributes = [.foregroundColor: unselectedItemTextColor]
    tabBar.standardAppearance = tabBarAppearance
    tabBar.scrollEdgeAppearance = tabBarAppearance
} else {
    UITabBarItem.appearance().setTitleTextAttributes([.foregroundColor: selectedItemTextColor], for: .selected)
    UITabBarItem.appearance().setTitleTextAttributes([.foregroundColor: unselectedItemTextColor], for: .normal)
    tabBar.barTintColor = backgroundColor
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM