设置状态栏颜色 - 延迟?
Posted
技术标签:
【中文标题】设置状态栏颜色 - 延迟?【英文标题】:Set Status bar color - delay? 【发布时间】:2016-03-30 10:25:05 【问题描述】:当我尝试在 ios 中更改我 StatusBar 的文本颜色时,总是会有 1-2 秒的延迟。所以它从黑色开始,然后延迟它变成白色,正如我想要的那样。
所有这些更改都在我的 ViewController 中,在 ViewDidLoad 中。
我将使用自定义视图来获取特定颜色:
let statusBarHeight = CGFloat(20)
let colorBGView = UIView(frame: CGRectMake(0, -statusBarHeight, self.view.bounds.width, statusBarHeight))
colorBGView.backgroundColor = UIColor.customDarkerGrey()
self.navigationController?.navigationBar.addSubview(colorBGView)
并将 barStyle 设置为 Black(使用 UINavigationController 时获得白色字体)
self.navigationController?.navigationBar.barStyle = UIBarStyle.Black
设置值:
View controller-based status bar appearance
在 plist.info 中为“YES”
但仍然存在“滞后” - 所以一切都是白色的,但最多需要 2 秒。有什么想法吗?
我找不到答案问题,因为这只是关于着色,而不是关于延迟的问题:
preferredStatusBarStyle isn't called
编辑:
好的,在创建一个包含 2 个 ViewController 和一个 NavigationController 的新项目后,当您尝试将颜色从 ViewController 更改为 ViewController 时,发现“延迟”是正常的。看来,函数:
override func preferredStatusBarStyle() -> UIStatusBarStyle
return UIStatusBarStyle.LightContent
被调用时有一点延迟 - 当添加错误时没有任何反应:
self.setNeedsStatusBarAppearanceUpdate()
所以在我的情况下,我在 NavigationController 上全局更改了它,并且(因为它加载了我的应用程序)您无法识别“延迟”。
也许这对其他人有帮助。
【问题讨论】:
你能创建一个最小的例子吗? 拨打setNeedsStatusBarAppearanceUpdate
in viewWillAppear:
目前我没有看到任何差异(在 ViewDidLoad 中出现了问题)
这种情况只发生在模拟器中吗?也许您在模拟器中打开了慢速动画 (cmd-T)?
不,没有慢速动画处于活动状态。但目前只在模拟器中尝试过。当应用程序加载时,我已经更改了我的代码以更改颜色 - 所以你无法识别延迟。但是如果你想模拟行为,只需在 Xcode 中创建一个简短的项目并尝试在第二个 ViewController 上更改颜色,你会看到 View 已经加载时会有短暂的延迟。
【参考方案1】:
尝试在方法didFinishLaunchinOptions中为AppDelegate中的状态栏设置颜色。由于您的状态栏颜色默认设置为其他颜色,然后您在控制器中将其设置为新颜色,因此它的创建延迟。
还有
设置值:
View controller-based status bar appearance
在 plist.info 中为“NO”
【讨论】:
@derdida 对你有帮助吗? 如何在我的 AppDelegate 中将颜色设置为白色?那里没有 NavigationController?而且preferredStatusBarStyle() 方法只在ViewController 上可用。 状态栏颜色很好,问题是我的字体颜色。有延迟。 @derdida 这就是我向您解释的内容.. 如果您在某些默认值已加载时尝试更改某些 viewController 中状态栏的外观,那么它会产生延迟.. 您无法在 AppDelegate 中设置颜色 - 新 (iOS9) 方法仅适用于 ViewControllers。所以你必须在你的 RootViewController/NavigationController 上设置它,而不是在 AppDelegate 中。以上是关于设置状态栏颜色 - 延迟?的主要内容,如果未能解决你的问题,请参考以下文章