2014-09-13 64 views
6

非常簡單,我希望能夠更改我的選項卡中未選項目的顏色。更改UITabBarItem未選中的顏色色調 - Swift

請參閱下面的「最多查看」對象大麥可讀的默認顏色。

這裏是代碼,我試圖執行:

UITabBarItem.appearance().setTitleTextAttributes(NSDictionary(object: UIColor.greenColor(), forKey: NSFontAttributeName), forState: UIControlState.Normal) 

enter image description here

但是,使用此代碼不能正常工作。有誰知道如何快速實現這種效果?


回答

2

UITabBarItem從類文檔:

默認情況下,未被選擇的實際和選定的圖像是 從源圖像中的α值自動創建。到 防止系統着色,提供圖像與 UIImageRenderingModeAlwaysOriginal。

線索不是你是否使用UIImageRenderingModeAlwaysOriginal,重要的是什麼時候使用它。

要防止未選定項目的灰色,您只需要防止未選定圖像的系統着色。這裏是如何做到這一點:

var firstViewController:UIViewController = UIViewController() 
// The following statement is what you need 
var customTabBarItem:UITabBarItem = UITabBarItem(title: nil, image: UIImage(named: "YOUR_IMAGE_NAME")?.imageWithRenderingMode(UIImageRenderingMode.AlwaysOriginal), selectedImage: UIImage(named: "YOUR_IMAGE_NAME")) 
firstViewController.tabBarItem = customTabBarItem 

正如你所看到的,我問的iOS應用圖像的原始顏色(白色,黃色,紅色,等等)僅適用於未選中狀態,並留下該圖像作爲它用於SELECTED狀態。

此外,您可能需要爲選項卡欄添加色調顏色,以便爲SELECTED狀態(而不是默認的iOS藍色)應用不同的顏色。根據上面的屏幕截圖,您正在爲選定狀態應用白色:

self.tabBar.tintColor = UIColor.whiteColor() 
0

似乎只是一個語法錯誤;嘗試這樣的:

UITabBarItem.appearance().setTitleTextAttributes([NSForegroundColorAttributeName: UIColor.greenColor()], forState: .Normal) 

或(包括圖像,如果上面沒有):

UITabBarItem.appearance().setTintColor(UIColor.greenColor());