我有一个应用程序,它在故事板中使用基于TabBar的导航来导航到不同的视图。
该应用程序在iOS7 - iOS9上运行良好。但是对于iOS10,标签项在被选中时会消失(图标和标题)。
标签栏完全配置在故事板中,没有自定义用户代码。在XCode中,一切看起来都很好:
但是当应用程序在iOS10设备/模拟器上运行时,应用程序如下所示(图像在同一个标签栏中显示不同的选择,所有3个项目的行为相同)
这个问题可能是什么原因?有没有工作?
我终于找到了解决这个问题的方法。我仍然不确定这是由于iOS 10中的更改还是错误。
从这个回答一个老问题:https://stackoverflow.com/a/39884669/1567923
您需要创建一个自定义TabBarViewController并在故事板中使用它。并在该视图控制器中执行类似的操作,直接在代码中设置tintColor:
class UIMeeetTabBarController: UITabBarController, UITabBarControllerDelegate{
override func viewDidLoad() {
super.viewDidLoad()
self.tabBar.tintColor = Style.colorRed
}
我希望这对你也有用。
从tabbar
中选择你的tabbarController scene
并在tintColor
下设置一些view
,然后检查它是否有效!
我知道这是一个旧的,但我在Xcode 9中遇到了同样的问题,最后在没有一行代码的情况下解决了它。转到属性检查器并使标签栏项目选定图像与栏项目图像匹配...
您无需设置自定义选项卡栏控制器。这里的问题是缺少文档(为此我向Apple提交了一个错误报告并鼓励您这样做)。
您可以在Interface Builder中通过选择标签栏本身然后转到“属性”检查器的“标签栏”(顶部)部分并设置“图像色调”颜色来解决此问题。我认为当标签栏项目进入“选定”状态时,控件会反转图形的alpha通道,并让底层标签栏的颜色显示出来。如果该颜色是“清除”或与您的标签栏项目的背景完全匹配......您什么也看不见。如果背景较暗,请尝试将此值设置为白色。
标签栏项目的图形仅使用其alpha(非透明)像素显示为黑白图像。然后,这些像素将允许底层标签栏的“色调”显示或不显示,具体取决于未选择/选择的状态。