Swift/iOS 8,当 prefersStatusBarHidden() 设置为 true 时,状态栏不隐藏

Posted

技术标签:

【中文标题】Swift/iOS 8,当 prefersStatusBarHidden() 设置为 true 时,状态栏不隐藏【英文标题】:Swift/iOS 8, Status bar is not hidden when prefersStatusBarHidden() is set to true 【发布时间】:2015-08-22 05:12:22 【问题描述】:

我在 ios 应用项目中有以下设置: 未勾选“隐藏状态栏”。

可以在部署信息下的常规项目设置中找到。

在 AppDelegate.swift 中:

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate 

    var window: UIWindow?

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool 
        window = UIWindow(frame: UIScreen.mainScreen().applicationFrame)

        window!.rootViewController = ViewController()
        window!.makeKeyAndVisible()
        // Override point for customization after application launch.
        return true
    
...

在 ViewController.swift 中:

class ViewController: UIViewController 

    override func viewDidLoad() 
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.
        view.backgroundColor = UIColor.blueColor()
    

    override func didReceiveMemoryWarning() 
        super.didReceiveMemoryWarning()
        // Dispose of any resources that can be recreated.
    

    override func prefersStatusBarHidden() -> Bool 
        return true;
    

我得到了以下结果(很遗憾,我是新成员,没有足够的代表来发布图片): 屏幕的大部分是蓝色的,除了最顶部(状态栏应该显示的地方)是黑色的。

谁能向我解释一下为什么顶部是黑色的,以及如何修复它(例如,把它变成蓝色)?

【问题讨论】:

关于图片:只需将其上传到某处并发布链接 - 模组将为您插入图片。关于您的问题:您检查过***.com/questions/26146012/… 吗? 好吧,您将其设置为隐藏在您的代码中 只需将其上传到 imgur 或基本上任何图片上传网站。 【参考方案1】:

顶部是黑色的,因为这条线是错误的:

window = UIWindow(frame: UIScreen.mainScreen().applicationFrame)

应该是:

window = UIWindow(frame:UIScreen.mainScreen().bounds)

【讨论】:

非常感谢马特!!!我还有一个问题要问:你有一些关于 iOS 应用架构的资料吗?我不确定 UIWindow 是什么、App Delegate 是什么等,以及它们如何与应用程序联系在一起。 基本上这里的寓意是:如果您要负责在代码中手动启动您的应用程序,就像您在didFinishLaunchingWithOptions: 中所做的那样,您必须正确执行! :) 这就是为什么大多数人使用故事板并让所有这些东西都得到照顾的原因。但是,不要误会——我不是在批评,只是指出风险。相反,我很佩服你愿意尝试手动启动,我个人一直在使用它。 点击我的图标并阅读我的个人资料以了解我的“来源”... :) 好的,谢谢!我会调查的。我真的不喜欢故事板,因为我觉得我无法完全控制我的应用程序。其实很讽刺。所有制作教程的著名开发人员都声称完全以编程方式制作应用程序是他们的首选方式,但他们没有关于它的教程!!! :-) 我完全同意故事板;这就是为什么我说我不是在批评。但是,正如我所说,如果你要手动跳舞,你必须正确地跳舞,否则会发生坏事——正如你已经发现的那样。

以上是关于Swift/iOS 8,当 prefersStatusBarHidden() 设置为 true 时,状态栏不隐藏的主要内容,如果未能解决你的问题,请参考以下文章

Swift - iOS 8 中的 UIPopoverController

Swift iOS 8+ UISearchBar图标,占位符和文本居中

Swift 3、iOS 10+、xCode 8.3+、Quickblox - 在保持纵横比/视频分辨率的同时切换全屏远程流

在 Swift iOS 8 中设置透明导航栏和状态栏的图像底图

dyld:库未加载:@rpath/MyDSK.framework/MyDSK -> SWIFT iOS 8.0

如何在 swift [iOS] 中从特定时间开始发送本地通知 UNTimeInterval