我试图将状态栏的样式更改为.Light
,但我之前在swift 1.2中实现的代码似乎不再起作用了......这里是代码:< / p>
override func viewDidLoad() {
super.viewDidLoad()
UIApplication.sharedApplication().statusBarStyle = .LightContent
}
现在我的View controller-based status bar appearance
info.plist设置为YES,并且读取UIKit文档,这将取消任何statusBarStyle更改并保持默认状态。但是当我将设置更改为“否”时并更改statusBarStyle,我在我的调试器中得到这个<Error>: CGContextSaveGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable
..这是Xcode中的一个错误吗?因为要更改状态栏样式,您必须将info.plist设置更改为NO,但是当发生这种情况时..错误
答案 0 :(得分:72)
Apple已添加了更改部署信息中状态栏样式的功能。只需选择“Light”。
同时在View controller-based status bar appearance
NO
密钥设置为Info.plist
答案 1 :(得分:7)
您仍然可以在视图控制器中使用preferredStatusBarStyle
:
步骤1:在info.plist中将ViewControllerBasedStatusBarAppearance设置为YES。 第2步:将此代码添加到您要编辑的ViewController中:
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent
}
***提示:它似乎只能在ViewDidLoad(),didReceiveMemoryWarning()函数之外工作。
答案 2 :(得分:7)
Swift 3只需将值View controller-based status bar appearance
的{{1}}添加到NO
,然后添加到info.plist
您想要的位置:
ViewController
答案 3 :(得分:6)
部署信息的更改有效但无论如何 - 您需要添加 '查看基于控制器的状态栏外观'键将plist文件设置为NO。
答案 4 :(得分:5)
您也可以在AppDelegate中添加它。如果要为应用程序中的每个ViewController更改它,而不必为每个其他VC使其不同,则此选项更好。
func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
application.statusBarStyle = UIStatusBarStyle.LightContent
// instead of
// UIApplication.sharedApplication().setStatusBarStyle(UIStatusBarStyle.LightContent, animated: false)
// which gives warning about deprecation in iOS 9
return true
}
答案 5 :(得分:4)
看起来它是Xcode 7.0中的一个错误。设置Error>: CGContextSaveGState: invalid context 0x0.
View controller-based status bar appearance
错误
现在我只是覆盖每个视图控制器中的状态栏颜色。
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return .LightContent
}
答案 6 :(得分:4)
你可以选择&#34; light&#34;在部署信息中,但是您还需要添加&#34;基于View控制器的状态栏外观&#34;并将其设置为NO。
答案 7 :(得分:4)
在此尝试这可能会对您有所帮助
首先转到info.plist文件并添加此&#34;查看基于控制器的状态栏外观&#34;作为键并将值设置为NO
中之后来到AppDelegate.swift文件并通过此private void cboeCID_SelectedIndexChanged_1(object sender, EventArgs e)
{
var CID = Convert.ToInt32(cboeCID.Text);
using (var db = new Entities2())
{
var course = (from a in db.Student_Course where a.CID == CID select a).First();
editDataGridView.Columns[course.SID].DataPropertyName = "clmSID";
editDataGridView.Columns[course.Mark].DataPropertyName = "clmMark";
};
}
代码行
UIApplication.sharedApplication().statusBarStyle = UIStatusBarStyle.LightContent
像这样
答案 8 :(得分:4)
对于swift 3覆盖preferredStatusBarStyle变量,请使用:
override var preferredStatusBarStyle: UIStatusBarStyle{
return .lightContent
}
答案 9 :(得分:2)
现有的答案很棒,但现在新的更新有点不同了!
override var
现在代替override func
让任何人感到困惑 - 要点仍然相同,您仍然需要更改您的信息列表&#39;:
override var preferredStatusBarStyle: UIStatusBarStyle
{
//LightContent
return UIStatusBarStyle.lightContent
//Default
//return UIStatusBarStyle.default
}
答案 10 :(得分:0)
如果您想在应用内不时更改它,可以使用前面提到的覆盖preferredStatusBarStyle()
。
请确保在致电setNeedsStatusBarAppearanceUpdate()
后致电preferredStatusBarStyle()
,然后通知IOS。