首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS 11中的StatusBarFrame

iOS 11中的StatusBarFrame
EN

Stack Overflow用户
提问于 2017-10-01 12:54:18
回答 1查看 668关注 0票数 1

在iOS 11中,获取statusBarFrame似乎没有返回正确的值。我意识到将来可能会有更好的方法来处理这个问题,使用安全区域,但现在我真的需要让statusBarFrame像iOS 11之前那样工作。下面是我通常如何获取它。

代码语言:javascript
复制
UIApplication.shared.statusBarFrame

我在iOS 11之前验证了我的应用程序工作正常,但在iOS 11中它似乎是反向的;例如,对于纵向的iPhone,它应该是20,而在横向的时候应该是0。但它在纵向返回0,在横向返回20。

我已经阅读了所有关于状态栏问题的帖子,但没有一篇涉及到这个问题。

我认为这似乎是一个时机问题。我将使用statusBarFrame的代码包装在DispatchQueue.main.async {}闭包中,它工作得很好。我会认为这更像是创可贴。仍然希望有一个合适的解决方案。

感谢您的建议。

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2017-10-01 13:14:45

您可以在应用程序启动期间或在视图控制器的viewDidLoad期间设置状态栏的背景色。在这里,它通过以下方式对我起作用。

代码语言:javascript
复制
extension UIApplication {

    var statusBarView: UIView? {
        return value(forKey: "statusBar") as? UIView
    }

}

// Set upon application launch, if you've application based status bar
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
        return true
    }
}


or 
// Set it from your view controller if you've view controller based statusbar
class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()

        UIApplication.shared.statusBarView?.backgroundColor = UIColor.red
    }

}

结果如下:

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46509347

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档