UITabBar 显示 UITabBarItem 图像忽略渲染模式 AlwaysOriginal
Posted
技术标签:
【中文标题】UITabBar 显示 UITabBarItem 图像忽略渲染模式 AlwaysOriginal【英文标题】:UITabBar displays UITabBarItem image ignoring rendering mode AlwaysOriginal 【发布时间】:2015-12-09 18:25:15 【问题描述】:随着 tvOS 9.1 和 Xcode 7.2 的发布,我的 UITabBarItem
图像显示不正确。在我的视图控制器中,我使用 UIImageRenderingMode.AlwaysOriginal
设置了带有图像的 tabBarItem.image
和 tabBarItem.selectedImage
。
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)
选中的图片显示正确,但未选中的图片显示为模板,即忽略其颜色信息。
使用 tvOS 9.0 SDK 正确显示两个图像,但未选择的图像在 tvOS 9.1 中显示不正确。更糟糕的是,未选中的图像显示为黑色,标签栏背景也显示为黑色。
这是在 tvOS 9.0 上运行的相同代码
我怀疑这是 tvOS 9.1 的错误,但有没有人找到解决方法或发现我做的不对?
【问题讨论】:
Apple 支持已确认这是一个错误。苹果错误提交。 openradar.appspot.com/radar?id=5035170180628480 在 tvOS 9.1.1 中修复。 【参考方案1】:我们在我们的 tvos 应用中看到了类似的东西,除了我们使用文本而不是图像。 tvOS 9.1 忽略 textColor。
UITabBarItem.appearance().setTitleTextAttributes([
NSForegroundColorAttributeName: <barTextColor>
], forState: UIControlState.Normal)
UITabBarItem.appearance().setTitleTextAttributes([
NSForegroundColorAttributeName: <barTextColorSelected>,
], forState: UIControlState.Selected)
【讨论】:
【参考方案2】:这似乎肯定是 tvOS 9.1 的 UITabBarController 实现中的一个错误。所以我最终写了自己的替代品。在此期间,我添加了对超过 7 个选项卡栏项目的支持,使其在黑色背景上看起来不错,并在其中一个选项卡上包含了一个搜索栏(也在黑色背景上)。这解决了我在构建我的第一个 tvOS 应用程序时遇到的许多困难。
Link to Github repository
【讨论】:
【参考方案3】:这已被 Apple 确认为错误,并已在 tvOS 9.1.1 中修复。
【讨论】:
【参考方案4】:可能对 tvOS 9.1 有所帮助。这段代码写入UITabBarController
的viewDidLoad()
。
for item in self.tabBar.items!
item.setTitleTextAttributes([NSForegroundColorAttributeName:UIColor.blackColor()], forState: UIControlState.Normal)
item.setTitleTextAttributes([NSForegroundColorAttributeName:UIColor.greenColor()], forState: UIControlState.Focused)
【讨论】:
以上是关于UITabBar 显示 UITabBarItem 图像忽略渲染模式 AlwaysOriginal的主要内容,如果未能解决你的问题,请参考以下文章
将 UITabBarItem 添加到 UIViewController 中的 UITabBar
UITabBar 在 iOS7 上更改一个 UITabBarItem 的背景颜色
无法访问 UITabBar 内的 UITabBarItem(s)
iOS 11 中的横向 UITabBar 中的 UITabBarItem
UINavigationbar/UINavigationItem/UITabBar/UITabButton/UITabBarItem粑粑粑粑~