【问题标题】:StatusBarFrame in iOS 11iOS 11 中的状态栏框架
【发布时间】:2017-10-01 04:54:17
【问题描述】:

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

UIApplication.shared.statusBarFrame

我已验证我的应用在 iOS 11 之前可以正常运行。但在 iOS 11 中它似乎是倒退的;例如,对于纵向的 iPhone,它应该为 20,横向为 0。但纵向返回 0,横向返回 20。

我已阅读有关状态栏问题的所有帖子,但没有一个解决此问题。

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

建议表示赞赏。

谢谢!

【问题讨论】:

    标签: ios swift statusbar ios11


    【解决方案1】:

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

    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
        }
    
    }
    



    结果如下:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多