2014-09-13 4 views
6

Проще говоря, я хотел бы иметь возможность изменять раскраску не выбранных элементов в моей панели вкладок.Изменить UITabBarItem Un-selected Color Tint - Swift

См. Ниже «Самый просматриваемый» Объектный ячмень, читаемый по умолчанию.

Вот код, который я пытался реализовать:

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

enter image description here

Однако, используя этот код не работает. Кто-нибудь знает, как добиться этого эффекта особенно быстро?


ответ

2

От UITabBarItem класса Docs:

По умолчанию фактические невыбранные и выбранные изображения автоматически создаются из альфа-значений в исходных изображениях. To предотвращает окраску системы, предоставляет изображения 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());