我的应用程序与Swift中的iPad和iPhone兼容,支持iOS 7和8,使用XCode 6.4。现在我将应用程序结构化为主 - 细节控制,并在分割控制器状态栏中设置为浅(白色)。在Storyboard中,所有控制器都显示白色状态栏(主控,详细信息,导航控制器...),但在模拟器中也不是iPhone / iPad中的白色状态栏是黑色的!
我尝试在每个控制器及其导航控制器中设置灯状态栏。在主视图控制器中尝试设置它。尝试添加plist选项,允许我设置每个视图控制器(请注意,我不想控制每个控制器的状态栏颜色,但要为应用程序设置全局)。还试图在状态栏样式中设置覆盖功能,甚至在viewDidLoad func中设置重载功能。没有任何效果。
我真的被困在这里;我认为只需设置分裂控制灯状态栏和其他任何地方它继承它(这就是它在stoyboard中的确如何看)。那我错过了什么?任何人都可以帮助我或在进一步调查中给我一些提示或指示吗?
以下是演示代码:https://goo.gl/U3Ynbc
非常感谢提前!
答案 0 :(得分:5)
在Info.plist
中,将“查看基于控制器的状态栏外观”添加到YES
。
然后,在视图控制器子类中,重写此方法:
- (UIStatusBarStyle)preferredStatusBarStyle
{
return UIStatusBarStyleLightContent;
}
答案 1 :(得分:1)
好的发现了。 在plist set"查看基于控制器的状态栏外观"在返回true之前,在func应用程序中的NO和appDelegate.swift中添加以下行: splitViewController.navigationController?.navigationBar.tintColor = UIColor.whiteColor()
答案 2 :(得分:0)
与提问者有相同的经历(在将.storyboard中的值设置为“Light Content”之后,在模拟器中看到statusBar前景白色,并尝试在使用splitView的应用程序的几个地方更改此内容),我在检查故事板的XML时发现这些是“模拟指标”。
当我将值UIStatusBarStyle
添加到我的Info.plist,并将其设置为UIStatusBarStyleLightContent
(这不是所提供的选项之一),然后运行,状态栏样式正确显示。 (这是在删除我放在.storyboard文件中的所有模拟指标变化之后)。
答案 3 :(得分:0)
如果要设置状态栏样式,应用程序级别,请在UIViewControllerBasedStatusBarAppearance
文件中将NO
设置为.plist
。
如果您要在视图控制器级别设置状态栏样式,请按照以下步骤操作:
UIViewControllerBasedStatusBarAppearance
文件中将YES
设置为.plist
。 在viewDidLoad添加功能 - setNeedsStatusBarAppearanceUpdate
覆盖视图控制器中的preferredStatusBarStyle。
-
override func viewDidLoad() {
super.viewDidLoad()
self.setNeedsStatusBarAppearanceUpdate()
}
override var preferredStatusBarStyle: UIStatusBarStyle {
return .lightContent
}