![]() |
1
12
选项1这没有任何作用,因为它只是一个模拟度量。您可以在接口生成器中设置它,但模拟的度量只是 模拟的,模拟的 并且在运行时不应用。 选项2此选项防止单个视图控制器设置状态栏外观(由于Info.plist设置),并且它依赖于部署设置中设置的默认颜色,但该值可以在运行时更改(请参见选项3)。 选项3与选项2一样,此选项防止单个视图控制器设置状态栏外观(由于Info.plist设置),但与选项2不同,我们在运行时动态设置颜色。我们可以在启动时在应用程序委托中执行此操作…或者我们可以在其他时间更改它。也许我们有一个像谷歌地图应用程序一样的夜间模式,或者我们让用户在某处配置自己的主题颜色。 选项4如果要嵌入UINavigationController,则需要将UINavigation Controller子类化,并在此处覆盖“preferredStatusBarStyle()”。
你可能错过了一步,
outlined here
在里面
至于为什么对于表面上相同的事物有不同的方法,我们必须首先意识到,这些方法实际上并不相同。 再一次,让我们将其分解。
为什么我们有你的选择2/3和你的选择4? 因为在某些应用程序中,您可能希望应用程序中每个视图控制器的状态栏颜色相同,但根据某些设置,状态栏颜色可能不同。 例如,考虑一下谷歌地图应用程序。晚上,应用程序变为黑色,状态栏需要显示为白色,但在白天,应用程序为白色,状态栏必须为黑色。每个视图控制器都是一样的,所以设置颜色的代码只需要在一个地方实现(不需要 每一个 视图控件继承自同一基本父级)。为此,我们可能需要您的选项2/3。 但是考虑一个应用程序,它有不同颜色的视图控制器,其中一些控制器用白色状态栏看起来更好,而另一些用黑色状态栏看起来更好些。对于这种方法,我们需要您的选项4,让每个视图控制器分别指定状态栏的颜色。 简而言之,选项2/3是一个全局状态栏设置,无论您在应用程序中的何处都适用,而选项4是一个本地的、每个VC的设置。 |