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.

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

Мы видели нечто подобное в нашем приложении 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)
        }
Другие вопросы по тегам