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, но кто-нибудь нашел обходной путь или видел что-то, что я делаю неправильно?


person picciano    schedule 09.12.2015    source источник
comment
Служба поддержки Apple подтвердила, что это ошибка. Ошибка Apple отправлена. openradar.appspot.com/radar?id=5035170180628480   -  person picciano    schedule 18.12.2015
comment
Исправлено в tvOS 9.1.1.   -  person picciano    schedule 02.02.2016


Ответы (4)


Мы видели нечто подобное в нашем приложении tvos, за исключением того, что мы используем текст вместо изображений. tvOS 9.1 игнорирует textColor.

UITabBarItem.appearance().setTitleTextAttributes([
    NSForegroundColorAttributeName: <barTextColor>
], forState: UIControlState.Normal)

UITabBarItem.appearance().setTitleTextAttributes([
    NSForegroundColorAttributeName: <barTextColorSelected>,
], forState: UIControlState.Selected)
person joerad11    schedule 10.12.2015

Похоже, это определенно ошибка в реализации UITabBarController для tvOS 9.1. Так что я закончил тем, что написал свою собственную замену. При этом я добавил поддержку более 7 элементов панели вкладок, сделал ее красивой на черном фоне и включил панель поиска на одной из вкладок (также на черном фоне). Это решает многие трудности, с которыми я столкнулся, пытаясь создать свое первое приложение для tvOS.

Ссылка на репозиторий Github

введите здесь описание изображения

person picciano    schedule 09.01.2016

Это было подтверждено Apple как ошибка и исправлено в tvOS 9.1.1.

person picciano    schedule 01.02.2016

Это может помочь 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)
        }
person Sankalap Yaduraj Singh    schedule 17.02.2016