UITabBar отображает изображение UITabBarItem, игнорируя режим рендеринга AlwaysOriginal
С выпуском tvOS 9.1 и Xcode 7.2 мой UITabBarItem
изображения отображаются неправильно. На мой взгляд, контроллеры, я установил tabBarItem.image
а также tabBarItem.selectedImage
с использованием изображений UIImageRenderingMode.AlwaysOriginal
,
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
self.tabBarItem.image = UIImage(named: "myTabImage")?.imageWithRenderingMode(.AlwaysOriginal)
self.tabBarItem.selectedImage = UIImage(named: "myTabImageSelected")?.imageWithRenderingMode(.AlwaysOriginal)
}
Выбранное изображение отображается правильно, но невыбранное изображение отображается как шаблон, то есть информация о его цвете игнорируется.
Оба изображения отображаются правильно с использованием SDK tvOS 9.0, но невыбранное изображение отображается неправильно в tvOS 9.1. Что еще хуже, невыбранные изображения отображаются черным, а фон панели вкладок также черный.
Вот тот же код, работающий на tvOS 9.0
Я подозреваю, что это ошибка в tvOS 9.1, но кто-нибудь нашел обходной путь или видит что-то, что я делаю неправильно?
4 ответа
Похоже, что это определенно ошибка в реализации UITabBarController для tvOS 9.1. Таким образом, я закончил писать свою собственную замену. В то же время, я добавил поддержку более 7 элементов панели вкладок, сделал его красивым на черном фоне и включил панель поиска на одной из вкладок (также на черном фоне). Это решает многие трудности, с которыми я столкнулся, пытаясь создать свое первое приложение для tvOS.
Мы видели нечто подобное в нашем приложении tvos, за исключением того, что мы используем текст вместо изображений. TVOS 9.1 игнорируя textColor.
UITabBarItem.appearance().setTitleTextAttributes([
NSForegroundColorAttributeName: <barTextColor>
], forState: UIControlState.Normal)
UITabBarItem.appearance().setTitleTextAttributes([
NSForegroundColorAttributeName: <barTextColorSelected>,
], forState: UIControlState.Selected)
Это было подтверждено Apple как ошибка и исправлено в tvOS 9.1.1.
Это может быть полезно для TVOS 9.1. Этот код записать в viewDidLoad()
из UITabBarController
,
for item in self.tabBar.items!{
item.setTitleTextAttributes([NSForegroundColorAttributeName:UIColor.blackColor()], forState: UIControlState.Normal)
item.setTitleTextAttributes([NSForegroundColorAttributeName:UIColor.greenColor()], forState: UIControlState.Focused)
}