我找到了四种不同的方式来改变Xcode中的iOS状态栏.为什么会有这
我一直在尝试更改
Swift应用程序中状态栏的颜色,我已经确定了在XCode中执行此操作的四种方法.然而,我只能成功使用方法3:
1.模拟指标(仅限故事板显示) 2.更改常规 – >部署信息 – >状态栏样式 确保以下Info.list设置设置为“NO”: View controller-based status bar appearance : NO 在此处的下拉框中选择“Light”或“Default”: General->Deployment Info->Status Bar Style 3.手动设置 确保以下Info.plist设置设置为“NO”: View controller-based status bar appearance : NO 插入以下代码(通常在didFinishLaunchingWithOptions中): UIApplication.sharedApplication().statusBarStyle = .LightContent 4.覆盖“preferredStatusBarStyle()” 确保存在以下Info.plist属性并将其设置为“YES”: View controller-based status bar appearance : YES 然后将以下代码添加到为Storyboard中的ViewController设置的UIViewController(或派生类): override func preferredStatusBarStyle() -> UIStatusBarStyle { return UIStatusBarStyle.LightContent } 我目前的理解 模拟指标仅用于显示,在运行时不提供实际更改.我相信手动设置和更改常规选项卡中的设置可能会在引擎盖下做同样的事情,但我不确定.我想还有一种方法可以直接为各个视图控制器设置此属性. 题 出于某种原因,实际上对我有用的唯一方法是方法3,手动设置.没有其他方法提供任何改变.就个人而言,我更喜欢在派生类中重写,所以我有一个共享UIViewController样式的中心位置. 解决方法
选项1
这没有任何作用,因为它只是一个模拟的指标.您可以在界面构建器中对其进行设置,但模拟的度量标准只是模拟的,不会在运行时应用. 选项2 此选项可防止各个视图控制器设置状态栏外观(由于Info.plist设置),并且它依赖于部署设置中的默认颜色集,但该值可以在运行时更改(请参阅选项3). 选项3 与选项2一样,此选项可防止各个视图控制器设置状态栏外观(由于Info.plist设置),但与选项2不同,我们在运行时动态设置颜色.我们可以在发布时在app委托中执行此操作…或者我们可以在其他时间更改它.也许我们有像谷歌地图应用程序的夜间模式,或者我们可能让用户在某处配置自己的主题颜色. 选项4 如果您正在嵌入UINavigationController,那么您将需要子类UINavigationController并在此处覆盖“preferredStatusBarStyle()”. 您可能缺少步骤outlined here.在viewDidLoad中,尝试指定您希望有机会设置状态栏. override func viewDidLoad() { super.viewDidLoad() setNeedsStatusBarAppearanceUpdate() } 至于为什么对于看似相同的事情有不同的方法,我们必须首先意识到这些实际上并不是同一个东西. 再一次,让我们分解吧. >选项1不是运行时更改,所以它对我们来说真的没有意义. 为什么我们有2/3选项和4选项? 因为在某些应用程序中,您可能希望应用程序中的每个视图控制器具有相同的状态栏颜色,但根据某些设置,状态栏颜色可能会有所不同. 例如,考虑使用Google地图应用.在晚上,应用程序变黑,状态栏需要显示白色,但在白天,应用程序为白色,状态栏需要为黑色.每个视图控制器都是一样的,因此设置颜色的代码只需要在一个地方实现(不要求每个视图控件都从同一个基本父级继承).为此,我们可能希望您选择2/3. 但是考虑一个具有不同颜色的视图控制器的应用程序,其中一些使用白色状态栏看起来更好,而其他一些看起来更好用黑色.对于这种方法,我们需要您的选项4,并让每个视图控制器分别指定状态栏应该是什么颜色. 简而言之,您的选项2/3是一个全局状态栏设置,无论您在应用程序中的哪个位置都适用,而选项4是本地的每VC设置. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |