iOS启动故事板:如何更改标签栏的颜色?
我在做什么:
使用“发射故事板”。 这很简单,并包含一个默认的UITabBarController。 我已经在启动故事板以及我的应用程序中将标签栏的“tintColor”设置为红色。 我正在使用Xcode 7,iOS 9。
什么不行:
启动屏幕使用默认的蓝色iOS tint颜色加载标签栏…! 然后加载后,更换启动屏幕故事板时,色调颜色将切换为红色。
你究竟想要在故事板上设置一个标签栏的色调?
演示项目: http : //s000.tinyupload.com/?file_id=73998115878034693063
正确的方法是混淆Xcode。 Xcode不应该知道使用的启动故事板实际上是launch
故事板。 这样你就可以设置一些自定义的User Defined Runtime Attributes
。 但是,你仍然无法运行一些自定义代码…
所以…要这样做,请按照下列步骤操作:
-
创build一个新的Xcode项目
-
将
Main.storyboard
复制到桌面,并将其重命名为Main.storyboard
。 -
将此
CustomLaunchScreen.storyboard
添加到项目中。 -
打开
Info.plist file
并将LaunchScreen
Launch screen interface file base name
值从LaunchScreen
为LaunchScreen
。 -
打开你的
CustomLaunchScreen.storyboard
。 删除默认的UIViewController
并将UITabBarController
设置为您的initial view controller
。 -
打开
UITabBarController
的tabBar
属性并导航到User Defined Runtime Attributes
-
添加
tintColor
属性,将type
设置为Color
并设置一些自定义值。
您也可以在这里观看完整的video教程
我想我已经明白了这一点。
网上有不less博客文章介绍“发布故事板”是如何运作的,但并不是苹果公司的很多。 我从这篇博客文章中发现,讨论启动屏幕图像是从启动故事板在运行时捕获的。 挖掘到我的模拟器目录显示,他们实际上在那里:
我不知道为什么,但设置UITabBar
的tintColor
的调用不会在启动故事板加载时触发,而是为其他值(如barTintColor
属性)设置颜色:
我只能说这个:不支持在启动故事板的视图控制器上的UITabBar
上设置tintColor
。 加载启动故事板时,幕后会有一些事情正在进行,以防止这种情况发生。
TL; DR:你不能用Launch Storyboard来做到这一点。 有一个解决方法可以让Xcode把你的启动故事板看作一个普通的故事板,看看OlDor的回答 。
或者,您可以使用正确加载的标签栏截取应用程序的屏幕截图,然后在启动视图控制器的UIImageView
使用该屏幕截图。
如果您只想添加标签栏而没有任何当前选定的选项卡,请将UITabBar
添加到启动的UIViewController
并根据您的喜好来设置UITabBarItem
的样式:
这个UITabBar
有两个UITabBarItems
,可以在不添加插口的情况下对其视图控制器进行设置。
非常感谢@OIDor的解决scheme,这是一个很好的破解。
不过要清楚的是,你不需要这么做。 你所要做的就是:
- 编辑启动屏幕故事板的源代码并将
launchScreen="YES"
更改为launchScreen="NO"
,这使您可以执行下一部分… - 在故事板的选项卡栏中添加用户定义的属性
tintColor
。 如果没有第一步,这是不允许的
嘿presto这一切工作。