我想移除屏幕顶部的状态栏。

这行不通:

func application
(application: UIApplication,
didFinishLaunchingWithOptions launchOptions: NSDictionary?)
-> Bool
{
        application.statusBarHidden = true
        return true
}

我也试过:

func application
(application: UIApplication,
didFinishLaunchingWithOptions launchOptions: NSDictionary?)
-> Bool
{
    self.window = UIWindow(frame: UIScreen.mainScreen().bounds)

    var controller = UIViewController()
    application.statusBarHidden = true
    controller.setNeedsStatusBarAppearanceUpdate()

    var view = UIView(frame: CGRectMake(0, 0, 320, 568))
    view.backgroundColor = UIColor.redColor()
    controller.view = view

    var label = UILabel(frame: CGRectMake(0, 0, 200, 21))
    label.center = CGPointMake(160, 284)
    label.textAlignment = NSTextAlignment.Center
    label.text = "Hello World"
    controller.view.addSubview(label)

    self.window!.rootViewController = controller
    self.window!.makeKeyAndVisible()
    return true
}

当前回答

 override func viewWillAppear(animated: Bool) {
    super.viewWillAppear(true);
    navigationController?.navigationBar.hidden = true // for navigation bar hide
    UIApplication.sharedApplication().statusBarHidden=true; // for status bar hide
}

其他回答

我使用的是Xcode 8.1 (8B62),部署目标设置为10.1,上面提到的覆盖选项我没有太多的运气。然而,检查部署信息中的“隐藏状态栏”选项对我来说是有用的。

项目>总则

我希望这能有所帮助。

更新为iOS 13和Swift 5

如果以上答案都不适合你。检查你的plist,看看你是否有这个:

“基于视图控制器的状态栏外观”

如果是,请确保将其设置为YES!!!!!

然后下面的代码将工作。

override var prefersStatusBarHidden: Bool {
    return true
}

iOS 10 / Swift 3.0更新

不再是函数,现在是属性…

override var prefersStatusBarHidden: Bool {
    return true
}

斯威夫特5: 在主视图控制器中,或者主导航控制器中,

    override var preferredStatusBarStyle: UIStatusBarStyle {
        return .lightContent
    }

    override var prefersStatusBarHidden: Bool {
        return false
    }

而plist中的“View controller-based status bar appearance”必须为YES,否则上述代码将不会被调用。

如果你想在启动应用程序时隐藏状态栏, plist中的“状态栏初始隐藏”必须为YES。 这可以防止发射图像失真时,额外的蓝色条显示在屏幕顶部。

在您的项目->通用->部署信息

状态栏风格:——

隐藏状态栏(iOS 10)