Я использую безопасные руководства, программно (т.е.) без раскадровок. Я хочу получить доступ к размеру safeAreaLayoutGuides
, layoutFrame
в моем приложении, но не знаю, когда его вызвать. Если вы звоните по номеру viewDidLoad
, возвращаемый размер совпадает с полным view.frame size
. Когда приложение догонит и перенастроит? Мое полное приложение имеет 5 экранов в пределах menubarcontroller
. Первый экран загружается с контентом, ограниченным view.topAnchor
, когда я активировал view.safeAreaLayoutGuide.topAnchor
. Если вы переключитесь на другую вкладку / экран, этот экран будет в порядке, а когда вы вернетесь к первому, макет исправится. В базовом примере я добавил кнопку, которая печатает размеры кадра после загрузки представления и возвращает правильный размер. Я не хочу, чтобы мой пользователь нажимал кнопку, чтобы правильно загрузить вид.
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
print(view.frame) // Returns (0.0, 0.0, 375.0, 812.0)
print(view.safeAreaLayoutGuide.layoutFrame) // Returns (0.0, 0.0, 375.0, 812.0)
}
@IBAction func button(_ sender: Any) {
print(view.frame) // Returns (0.0, 0.0, 375.0, 812.0)
print(view.safeAreaLayoutGuide.layoutFrame) // Returns (0.0, 44.0, 375.0, 734.0)
}
}