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 中发现,其中讨论了启动屏幕图像是在运行时从启动情节提要中捕获的。深入我的模拟器目录发现它们实际上在那里:
我不确定为什么,但是设置 UITabBar
的 tintColor
的调用在加载启动情节提要时没有及时触发,而是为其他值设置颜色,例如barTintColor
属性 有效:
我只能说:不支持在启动情节提要中的视图控制器上的 UITabBar
上设置 tintColor
。加载启动故事板时,幕后发生了一些事情,阻止了它的工作。
TL;DR:您不能使用 Launch Storyboard 执行此操作。 对于诱使 Xcode 将您的启动 Storyboard 视为常规 Storyboard 的解决方法,参见 。
作为替代方案,您可以截取正确加载标签栏的应用程序的屏幕截图,对其进行调整,然后在启动视图控制器的 UIImageView
中使用它。
如果您只想添加标签栏而不添加任何当前选定的标签,请将 UITabBar
添加到您的启动 UIViewController
并根据您的喜好设置 UITabBarItem
的样式:
这个 UITabBar
有两个 UITabBarItems
可以在不向其视图控制器添加插座的情况下设置样式。
正确的做法是迷惑Xcode。 Xcode应该不知道使用的launch storyboard其实是launch
storyboard。这样您就可以设置一些自定义 User Defined Runtime Attributes
。但是,您仍然无法 运行 一些自定义代码...
所以...为此,请按照下列步骤操作:
创建一个新的 Xcode 项目
将您的 Main.storyboard
复制到桌面并将其重命名为 CustomLaunchScreen.storyboard
。
将此 CustomLaunchScreen.storyboard
添加到项目中。
打开您的 Info.plist file
并将键 Launch screen interface file base name
的值从 LaunchScreen
更改为 CustomLaunchScreen
。
打开你的CustomLaunchScreen.storyboard
。删除默认 UIViewController
并将 UITabBarController
设置为您的 initial view controller
.
打开 UITabBarController
的 tabBar
属性 并导航到 User Defined Runtime Attributes
添加 tintColor
属性,将 type
设置为 Color
并设置一些自定义值。
您还可以观看完整的视频教程Here
感谢@OIDor 的解决方案,这是一个很棒的技巧。
但是需要明确的是,您不需要做所有这些。您所要做的就是:
- 编辑启动屏幕故事板的来源并更改
launchScreen="YES"
到 launchScreen="NO"
,这使您能够执行
下一部分...
- 在选项卡栏上添加用户定义的属性
tintColor
在情节提要中。如果没有第一个,Xcode 不允许这样做
步骤
嗨,一切正常。
我在做什么:
使用 'launch storyboard'。它非常简单,并且包含一个默认的 UITabBarController。我已经在启动情节提要和我的应用程序中将选项卡栏的 'tintColor' 设置为红色。我正在使用 Xcode 7,iOS 9.
什么不起作用:
启动屏幕使用默认蓝色 iOS 色调加载标签栏...!然后加载后,当启动屏幕情节提要被替换时,色调颜色会切换为红色。
你到底想怎么在情节提要中设置标签栏的色调?
演示项目:http://s000.tinyupload.com/?file_id=73998115878034693063
我想我已经明白了。
网上有很多关于 Launch Storyboards 如何工作的博客文章,但来自 Apple 的文章并不多。我从 this blog post 中发现,其中讨论了启动屏幕图像是在运行时从启动情节提要中捕获的。深入我的模拟器目录发现它们实际上在那里:
我不确定为什么,但是设置 UITabBar
的 tintColor
的调用在加载启动情节提要时没有及时触发,而是为其他值设置颜色,例如barTintColor
属性 有效:
我只能说:不支持在启动情节提要中的视图控制器上的 UITabBar
上设置 tintColor
。加载启动故事板时,幕后发生了一些事情,阻止了它的工作。
TL;DR:您不能使用 Launch Storyboard 执行此操作。 对于诱使 Xcode 将您的启动 Storyboard 视为常规 Storyboard 的解决方法,参见
作为替代方案,您可以截取正确加载标签栏的应用程序的屏幕截图,对其进行调整,然后在启动视图控制器的 UIImageView
中使用它。
如果您只想添加标签栏而不添加任何当前选定的标签,请将 UITabBar
添加到您的启动 UIViewController
并根据您的喜好设置 UITabBarItem
的样式:
这个 UITabBar
有两个 UITabBarItems
可以在不向其视图控制器添加插座的情况下设置样式。
正确的做法是迷惑Xcode。 Xcode应该不知道使用的launch storyboard其实是launch
storyboard。这样您就可以设置一些自定义 User Defined Runtime Attributes
。但是,您仍然无法 运行 一些自定义代码...
所以...为此,请按照下列步骤操作:
创建一个新的 Xcode 项目
将您的
Main.storyboard
复制到桌面并将其重命名为CustomLaunchScreen.storyboard
。将此
CustomLaunchScreen.storyboard
添加到项目中。打开您的
Info.plist file
并将键Launch screen interface file base name
的值从LaunchScreen
更改为CustomLaunchScreen
。打开你的
CustomLaunchScreen.storyboard
。删除默认UIViewController
并将UITabBarController
设置为您的initial view controller
.打开
UITabBarController
的tabBar
属性 并导航到User Defined Runtime Attributes
添加
tintColor
属性,将type
设置为Color
并设置一些自定义值。
您还可以观看完整的视频教程Here
感谢@OIDor 的解决方案,这是一个很棒的技巧。
但是需要明确的是,您不需要做所有这些。您所要做的就是:
- 编辑启动屏幕故事板的来源并更改
launchScreen="YES"
到launchScreen="NO"
,这使您能够执行 下一部分... - 在选项卡栏上添加用户定义的属性
tintColor
在情节提要中。如果没有第一个,Xcode 不允许这样做 步骤
嗨,一切正常。