2017-10-01 22 views
0

statusBarFrameを取得しても、iOS 11で正しい値が返されないようです。セーフエリアを使用して今後これを処理する方法はもっと良いかもしれませんが、今は本当に必要ですstatusBarFrameはiOS 11の前と同じように動作します。これは通常私がどのように取得するかです。iOS 11のStatusBarFrame

UIApplication.shared.statusBarFrame 

私のアプリがiOS 11より前に正常に動作することを確認しました。しかし、iOS 11ではそれが後方にあるようです。たとえば、iPhoneの場合は、縦20と横0になりますが、縦に0、横に20が返されます。

ステータスバーの問題に関するすべての記事を読みましたが、この問題に対処していません。

タイミングの問題と思われます。私はDispatchQueue.main.async {}クロージャーでstatusBarFrameを使用するコードをラップし、正常に動作します。私はこれ以上のバンダイを考慮する。まだ適切な解決策を望んでいる。

感謝の意を表します。

ありがとうございます!

答えて

0

アプリケーションの起動中またはビューコントローラの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 
    } 

} 



結果である:

enter image description here