2009-04-26 172 views

回答

4

這個SDK並沒有使這個簡單,但它是在技術上可能。蘋果顯然認爲這是他們一致觀感的一部分。

UITabBar是UIView的子類。你總是可以繼承和實現你自己的-drawRect:

這不是一個簡單的任務,但是,你必須從頭開始重新實現這個類,否則你冒着一些奇怪的副作用。

1

iOS 5.0修復了這個問題,但解決方案是在NDA下。在您的文檔中查找UITabBar以簡單方式執行您想要的操作。

18

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

+4

在iOS 8中棄用。 – KPM 2014-09-25 20:18:11

+1

@KPM,我發現它已被棄用,但我們應該用什麼來代替?這仍然適用於iOS 8,因爲它值得。 – 2014-09-28 22:10:39

+1

查看下面的凱爾的答案。 http://stackoverflow.com/a/18996564/364446 – KPM 2014-09-28 22:16:50

11

這是非常容易

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

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

但這會改變文本的顏色,而不是整個選擇區域。任何方式來實現這一目標? – 2015-02-09 05:53:37

+3

已棄用ios 8 – codercat 2015-07-30 13:00:20

3

我一直在尋找一種方式來設置所選文本顏色一個UITabBarItem,並且使用UIAppearance協議發現了一個死的簡單方法。

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

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

請原諒可怕的顏色!

+0

已棄用UITextAttributeTextColor。最新的選擇是什麼? – 2017-04-25 07:28:04

14

在iOS 7中,它只是tintColor。做到這一點的一種方法是子類UITabBarViewController,設置在故事板自定義類,並在子類的tabBarVC的viewDidLoad方法補充一點:

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

因爲UITextAttributeTextColor在iOS的7棄用,你應該使用:

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

更新2017年9月: 它已經兩年了,因爲我已經寫了這個答案,因爲它是定期接收upvotes,我應該說,這可能是最糟糕的回答這個問題,這是容易出錯,裏因爲iOS更新而難以調試等等,所以請不要執行我寫的東西,並應用更好的解決方案,例如UITabBar或UITabBarController的子類化。謝謝。

你可以通過爲你的UITabBar設置一個「tintColor」屬性(Key Path)來做到這一點。

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

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

enter image description here

更多內容: 有一個在UITabBar的身份檢查,我相信會做同樣的事情,但很顯然,它什麼都不做的「色調」屬性。它的默認值是選擇UITabBarItem時的確切默認填充顏色,所以我的猜測是它會在穩定版本Xcode 7中修復。手指交叉。

2

從iOS的8起它的那樣簡單:

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

只要在我的情況下,其白更改以下屬性在Interface Builder爲的TabBar

明顯。

1
enter image description here

爲了達到上述結果來執行以下步驟。

第1步:添加你想要的圖像Assets.xcassets,並確保他們Render AsDefault

enter image description here

第2步:選擇UITabBar對象,並設置Image Tint顏色,這種顏色會選標籤顏色

enter image description here

第3步:選擇UITabBar對象,並添加關鍵路徑unselectedItemTintColor類型ColorChoose color for unselected item用戶自定義屬性運行

enter image description here

全部完成。