簡體   English   中英

如何更改 UITabBar 選擇顏色

[英]How to change UITabBar Selection color

我需要將 UITabBar 的選擇顏色從默認的藍色更改為紅色。 我們如何做到這一點。

2017 年 9 月更新:我寫這個答案已經兩年了,因為它定期收到投票,我應該說這可能是這個問題最糟糕的答案,它容易出錯,可能會因 iOS 更新而中斷,很難調試等,所以請不要做我寫的事情並應用更好的解決方案,例如子類化 UITabBar 或 UITabBarController。 謝謝。

您可以通過為您的 UITabBar 設置“tintColor”屬性(鍵路徑)來實現此目的。

  1. 在文檔大綱中選擇 UITabBar。 不是帶有黃色圖標的控制器。)
  2. 在 Utilities 區域中選擇 Identity Inspector。
  3. 單擊“用戶定義的運行時屬性”中的 +。
  4. 添加“顏色”類型的“tintColor”鍵路徑和您想要的顏色。

這應該這樣做。 您可以對照下面的屏幕截圖進行檢查。

在此處輸入圖片說明

更多相關信息: UITabBar 的 Identity Inspector 中有一個“Tint”屬性,我相信它會做完全相同的事情,但顯然它什么都不做。 它的默認值是選擇 UITabBarItem 時的確切默認填充顏色,所以我猜它會在穩定版 Xcode 7 中修復。手指交叉。

在 IOS5 中, UITabBar 有一個selectedImageTintColor屬性,它可以滿足您的需求。

在 iOS 7 中,它只是 tintColor。 實現此目的的一種方法可能是將 UITabBarViewController 子類化,在故事板中設置自定義類,並在子類化的 tabBarVC 的viewDidLoad方法中添加以下內容:

[[self tabBar] setTintColor:[UIColor redColor]];

在此處輸入圖片說明

要達到上述結果,請執行以下步驟。

步驟 1:Assets.xcassets添加所需的圖像,並確保它們Render AsDefault

在此處輸入圖片說明

第 2 步:選擇您的UITabBar對象並設置Image Tint顏色,此顏色將被選擇標簽顏色

在此處輸入圖片說明

第 3 步:選擇UITabBar對象並添加Key Path : unselectedItemTintColor , Type : Color , Value : 在User Defined Runtime Attributes 中Choose color for unselected item

在此處輸入圖片說明

全部完成。

這非常容易

創建一個自定義的UITabBarController類並在-(void)viewDidLoad方法中添加這一行:

[[self tabBar] setSelectedImageTintColor:[UIColor greenColor]]; 

因為 UITextAttributeTextColor 在 iOS 7 中被棄用,你應該使用:

[UITabBarItem.appearance setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor greenColor]} forState:UIControlStateNormal];    
[UITabBarItem.appearance setTitleTextAttributes:@{NSForegroundColorAttributeName : [UIColor purpleColor]} forState:UIControlStateSelected];

從 iOS 8 開始,它很簡單:

UITabBar.appearance().tintColor = UIColor.redColor()

只需在界面生成器中為 TabBar 更改以下屬性

顯然,就我而言,它是白色的。

SDK 並沒有讓這變得容易,但在技術上是可行的。 蘋果顯然認為這是他們對一致外觀和感覺的願景的一部分。

UITabBar 是 UIView 的子類。 您始終可以子類化並實現您自己的-drawRect:

這不是一項微不足道的任務,但是,您必須從頭開始重新實現該類,否則您將面臨一些奇怪的副作用。

我一直在尋找一種方法來設置 UITabBarItem 的選定文本顏色,並找到了一種使用 UIAppearance 協議的簡單方法。

[UITabBarItem.appearance setTitleTextAttributes:@{
        UITextAttributeTextColor : [UIColor greenColor] } forState:UIControlStateNormal];

[UITabBarItem.appearance setTitleTextAttributes:@{
        UITextAttributeTextColor : [UIColor purpleColor] }     forState:UIControlStateSelected];

請原諒糟糕的顏色!

Swift 5 編程

在 Swift 5 中這很容易。

在你的TabBarController寫:

tintColor = UIColor.red  

就是這樣

iOS 5.0 修復了這個問題,但解決方案在保密協議下。 在您的文檔中查找 UITabBar 以了解做您想做的事情的簡單方法。

我找到了最簡單的解決方案 -

  1. 在標簽欄控制器中選擇標簽欄

  2. 設置圖像色調顏色

  3. 設置色調顏色

供參考,請參閱所附圖片。

在此處輸入圖片說明

暫無
暫無

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

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