




это действительно интересный вопрос, иногда мне приходилось с ним разбираться.
если вы заметили, что в магазине приложений в таком контроллере просмотра не было строки состояния, это означает, что зеленая полоса не должна отображаться вообще. это первая подсказка.
вы можете получить доступ к строке состояния с UIApplication.shared.value(forKey: "statusBarWindow") as! UIWindow
Согласно пункту номер один, это означает, что строка состояния не скрыта, а на самом деле ее statusBarWindow.frame.origin.y просто сдвинут вверх.
пожалуйста, не нужно обращаться с iPhone x отдельно
пожалуйста, убедитесь, что строка состояния не скрыта
обратите внимание, что это не единственный правильный способ, прямо сейчас у вас есть само представление, вы можете изменить источник или размер или даже попытаться получить то, что находится внутри этого представления, и скрыть их или изменить их рамки тоже и т. д.
вот пример того, как это можно сделать.
class ViewController: UIViewController {
var isHidden:Bool = false
override func viewDidLoad() {
super.viewDidLoad()
}
override func viewDidAppear(_ animated: Bool) {
super.viewDidAppear(animated)
UIView.animate(withDuration: 0.5) { () -> Void in
let statusBarWindow = UIApplication.shared.value(forKey: "statusBarWindow") as! UIWindow
statusBarWindow.frame = CGRect(x: 0, y: -20, width: statusBarWindow.frame.size.width, height: 40.0)
}
}
override func didReceiveMemoryWarning() {
super.didReceiveMemoryWarning()
// Dispose of any resources that can be recreated.
}
override var prefersStatusBarHidden: Bool{
return isHidden
}
}
также прикрепил изображение с результатом этого кода, надеюсь, этот ответ сработает и для вас.
Боюсь, что невозможно программно увеличить строку состояния