iOS Launch Storyboard:如何更改Tab Bar的色调?

时间:2016-03-02 21:42:58

标签: ios swift interface-builder uitabbarcontroller uistoryboard

我在做什么:

使用'发布故事板'。它非常简单,并包含一个默认的UITabBarController。我已经设置了标签栏&#t; tintColor'在发布故事板以及我的应用程序中显示为红色。我正在使用Xcode 7,iOS 9。

什么不起作用:

启动屏幕使用默认的蓝色iOS色调加载标签栏......!然后在加载后,当更换启动屏幕故事板时,色调颜色会变为红色。

你究竟想在故事板中设置标签栏的色彩颜色吗?

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

3 个答案:

答案 0 :(得分:4)

正确的方法是混淆Xcode。 Xcode不应该知道使用的启动故事板实际上是launch故事板。这样您就可以设置一些自定义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. 打开tabBar的{​​{1}}媒体资源,然后导航至UITabBarController

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

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

答案 1 :(得分:1)

非常感谢@OIDor的解决方案,这是一个很棒的黑客。

然而,要清楚,你不需要做所有这些。您所要做的就是:

  1. 编辑Launch Screen故事板的来源并进行更改 launchScreen="YES"launchScreen="NO",这使您可以执行此操作 下一部分......
  2. 在标签栏上添加用户定义的属性tintColor 在故事板中。没有第一个,Xcode不允许这样做 步骤
  3. 嘿,所有人都在工作。

答案 2 :(得分:0)

我想我已经弄明白了。

网上有很多关于Launch Storyboard如何运作的博客文章,但Apple的文章并不多。我在this blog post中发现,它讨论了启动故事板在运行时捕获的启动屏幕图像。深入我的模拟器目录显示他们实际上在那里:

launch1

我不确定原因,但设置UITabBar的{​​{1}}的调用在启动故事板加载时没有及时触发,而是为其他值设置颜色,例如{ {1}}属性有效:

launch2

我只能这样说:不支持在启动故事板中的视图控制器上设置tintColor barTintColor。当启动故事板加载时,幕后会发生一些事情,导致无法正常工作。

TL; DR:您无法通过启动故事板执行此操作。有关将Xcode作为常规故事板处理您的启动故事板的技巧,请参阅OlDor's answer

作为替代方案,您可以在正确加载标签栏的情况下拍摄应用的屏幕截图,进行调整,然后在启动视图控制器的tintColor中使用它。

如果您只想添加标签栏而不添加任何当前选项卡,请在您的启动UITabBar中添加UIImageView并根据自己的喜好设置UITabBar的样式:

tab

UIViewController有两个UITabBarItem可以设置样式,而不会向其视图控制器添加插座。