iOS 启动情节提要:如何更改标签栏的色调?

iOS Launch Storyboard: How can I change a Tab Bar's tint color?

我在做什么:

使用 'launch storyboard'。它非常简单,并且包含一个默认的 UITabBarController。我已经在启动情节提要和我的应用程序中将选项卡栏的 'tintColor' 设置为红色。我正在使用 Xcode 7,iOS 9.

什么不起作用:

启动屏幕使用默认蓝色 iOS 色调加载标签栏...!然后加载后,当启动屏幕情节提要被替换时,色调颜色会切换为红色。


你到底想怎么在情节提要中设置标签栏的色调?

演示项目:http://s000.tinyupload.com/?file_id=73998115878034693063

我想我已经明白了。

网上有很多关于 Launch Storyboards 如何工作的博客文章,但来自 Apple 的文章并不多。我从 this blog post 中发现,其中讨论了启动屏幕图像是在运行时从启动情节提要中捕获的。深入我的模拟器目录发现它们实际上在那里:

我不确定为什么,但是设置 UITabBartintColor 的调用在加载启动情节提要时没有及时触发,而是为其他值设置颜色,例如barTintColor 属性 有效:

我只能说:不支持在启动情节提要中的视图控制器上的 UITabBar 上设置 tintColor。加载启动故事板时,幕后发生了一些事情,阻止了它的工作。

TL;DR:您不能使用 Launch Storyboard 执行此操作。 对于诱使 Xcode 将您的启动 Storyboard 视为常规 Storyboard 的解决方法,参见

作为替代方案,您可以截取正确加载标签栏的应用程序的屏幕截图,对其进行调整,然后在启动视图控制器的 UIImageView 中使用它。

如果您只想添加标签栏而不添加任何当前选定的标签,请将 UITabBar 添加到您的启动 UIViewController 并根据您的喜好设置 UITabBarItem 的样式:

这个 UITabBar 有两个 UITabBarItems 可以在不向其视图控制器添加插座的情况下设置样式。

正确的做法是迷惑Xcode。 Xcode应该不知道使用的launch storyboard其实是launchstoryboard。这样您就可以设置一些自定义 User Defined Runtime Attributes。但是,您仍然无法 运行 一些自定义代码...

所以...为此,请按照下列步骤操作:

  1. 创建一个新的 Xcode 项目

  2. 将您的 Main.storyboard 复制到桌面并将其重命名为 CustomLaunchScreen.storyboard

  3. 将此 CustomLaunchScreen.storyboard 添加到项目中。

  4. 打开您的 Info.plist file 并将键 Launch screen interface file base name 的值从 LaunchScreen 更改为 CustomLaunchScreen

  5. 打开你的CustomLaunchScreen.storyboard。删除默认 UIViewController 并将 UITabBarController 设置为您的 initial view controller.

  6. 打开 UITabBarControllertabBar 属性 并导航到 User Defined Runtime Attributes

  7. 添加 tintColor 属性,将 type 设置为 Color 并设置一些自定义值。

您还可以观看完整的视频教程Here

感谢@OIDor 的解决方案,这是一个很棒的技巧。

但是需要明确的是,您不需要做所有这些。您所要做的就是:

  1. 编辑启动屏幕故事板的来源并更改 launchScreen="YES"launchScreen="NO",这使您能够执行 下一部分...
  2. 在选项卡栏上添加用户定义的属性tintColor 在情节提要中。如果没有第一个,Xcode 不允许这样做 步骤

嗨,一切正常。