iOS-StatusBar-Example
iOS-StatusBar-Example copied to clipboard
Not working when start app on landscape mode
Not working when start app on landscape mode. iOS 13.2.2, iPhone 11 Start app on landscape mode and rotate to portrait. Status bar not showing up. It works only when we start app on portrait mode
I'm gonna find a solution for this one, thank you for the reporting
Hello, here is my solution:
fileprivate var customStatusBarHeightConstraint: NSLayoutConstraint?
if #available(iOS 13.0, *) {
let app = UIApplication.shared
let statusBarHeight: CGFloat = app.statusBarFrame.size.height
let statusbarView = UIView()
statusbarView.backgroundColor = UIColor.white
view.addSubview(statusbarView)
statusbarView.translatesAutoresizingMaskIntoConstraints = false
customStatusBarHeightConstraint = statusbarView.heightAnchor
.constraint(equalToConstant: statusBarHeight)
customStatusBarHeightConstraint?.isActive = true
statusbarView.widthAnchor
.constraint(equalTo: view.widthAnchor, multiplier: 1.0).isActive = true
statusbarView.topAnchor
.constraint(equalTo: view.topAnchor).isActive = true
statusbarView.centerXAnchor
.constraint(equalTo: view.centerXAnchor).isActive = true
} else {
let statusBar = UIApplication.shared.value(forKeyPath: "statusBarWindow.statusBar") as? UIView
statusBar?.backgroundColor = UIColor.white
}
override func viewWillLayoutSubviews() {
super.viewWillLayoutSubviews()
if let customStatusBarHeightConstraint = customStatusBarHeightConstraint {
let statusBarHeight: CGFloat = UIApplication.shared.statusBarFrame.size.height
if customStatusBarHeightConstraint.constant != statusBarHeight {
customStatusBarHeightConstraint.constant = statusBarHeight
}
}
}