[英]How to change UITabBar Selection color
我需要將 UITabBar 的選擇顏色從默認的藍色更改為紅色。 我們如何做到這一點。
2017 年 9 月更新:我寫這個答案已經兩年了,因為它定期收到投票,我應該說這可能是這個問題最糟糕的答案,它容易出錯,可能會因 iOS 更新而中斷,很難調試等,所以請不要做我寫的事情並應用更好的解決方案,例如子類化 UITabBar 或 UITabBarController。 謝謝。
您可以通過為您的 UITabBar 設置“tintColor”屬性(鍵路徑)來實現此目的。
這應該這樣做。 您可以對照下面的屏幕截圖進行檢查。
更多相關信息: UITabBar 的 Identity Inspector 中有一個“Tint”屬性,我相信它會做完全相同的事情,但顯然它什么都不做。 它的默認值是選擇 UITabBarItem 時的確切默認填充顏色,所以我猜它會在穩定版 Xcode 7 中修復。手指交叉。
在 IOS5 中, UITabBar 有一個selectedImageTintColor屬性,它可以滿足您的需求。
在 iOS 7 中,它只是 tintColor。 實現此目的的一種方法可能是將 UITabBarViewController 子類化,在故事板中設置自定義類,並在子類化的 tabBarVC 的viewDidLoad
方法中添加以下內容:
[[self tabBar] setTintColor:[UIColor redColor]];
這非常容易
創建一個自定義的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 中這很容易。
在你的TabBarController
寫:
tintColor = UIColor.red
就是這樣
iOS 5.0 修復了這個問題,但解決方案在保密協議下。 在您的文檔中查找 UITabBar 以了解做您想做的事情的簡單方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.