iOS启动故事板:如何更改标签栏的颜色?

我在做什么:

使用“发射故事板”。 这很简单,并包含一个默认的UITabBarController。 我已经在启动故事板以及我的应用程序中将标签栏的“tintColor”设置为红色。 我正在使用Xcode 7,iOS 9。

什么不行:

启动屏幕使用默认的蓝色iOS tint颜色加载标签栏…! 然后加载后,更换启动屏幕故事板时,色调颜色将切换为红色。


你究竟想要在故事板上设置一个标签栏的色调?

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

正确的方法是混淆Xcode。 Xcode不应该知道使用的启动故事板实际上是launch故事板。 这样你就可以设置一些自定义的User Defined Runtime Attributes 。 但是,你仍然无法运行一些自定义代码…

所以…要这样做,请按照下列步骤操作:

  1. 创build一个新的Xcode项目

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

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

  4. 打开Info.plist file并将LaunchScreen Launch screen interface file base name值从LaunchScreenLaunchScreen

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

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

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

您也可以在这里观看完整的video教程

我想我已经明白了这一点。

网上有不less博客文章介绍“发布故事板”是如何运作的,但并不是苹果公司的很多。 我从这篇博客文章中发现,讨论启动屏幕图像是从启动故事板在运行时捕获的。 挖掘到我的模拟器目录显示,他们实际上在那里:

launch1

我不知道为什么,但设置UITabBartintColor的调用不会在启动故事板加载时触发,而是为其他值(如barTintColor属性)设置颜色:

launch2

我只能说这个:不支持在启动故事板的视图控制器上的UITabBar上设置tintColor 。 加载启动故事板时,幕后会有一些事情正在进行,以防止这种情况发生。

TL; DR:你不能用Launch Storyboard来做到这一点。 有一个解决方法可以让Xcode把你的启动故事板看作一个普通的故事板,看看OlDor的回答 。

或者,您可以使用正确加载的标签栏截取应用程序的屏幕截图,然后在启动视图控制器的UIImageView使用该屏幕截图。

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

标签

这个UITabBar有两个UITabBarItems ,可以在不添加插口的情况下对其视图控制器进行设置。

非常感谢@OIDor的解决scheme,这是一个很好的破解。

不过要清楚的是,你不需要这么做。 你所要做的就是:

  1. 编辑启动屏幕故事板的源代码并将launchScreen="YES"更改为launchScreen="NO" ,这使您可以执行下一部分…
  2. 在故事板的选项卡栏中添加用户定义的属性tintColor 。 如果没有第一步,这是不允许的

嘿presto这一切工作。