Как я знаю, когда разделенное представление закончило свою разметку?
Главное окно моего приложения содержит NSSplitView
,
Мне нужно получить ширину первого упорядоченного подпредставления разделенного вида (расположенного слева), чтобы выполнить некоторые обновления пользовательского интерфейса.
Я пытался получить это значение в двух разных местах:
- в окне контроллера
windowDidLoad()
метод - в контроллере разделенного вида
viewDidLayout()
метод
используя следующий код:
var leftViewWidth: CGFloat? {
guard let leftView = splitViewController?.splitView.arrangedSubviews.first else {
return nil
}
return leftView.frame.size.width
}
В обоих местах этот код возвращает 234 (сразу после запуска приложения), но когда я нажимаю на кнопку и запускаю тот же код, он неожиданно возвращает 254 (что является правильным значением).
Это говорит мне о том, что в обоих упомянутых местах компоновка разделенного вида еще не закончена, и каким-то образом система изменяет размер левого представления. Итак, вопрос:
Как я узнаю, когда макет разделенного вида сделан?
(И из чистого любопытства: какая разница в 20 баллов?)
Редактировать:
По какой-то причине эта проблема не возникает, когда я устанавливаю первый разделенный вид behavior
в sidebar
или же contentList
, Я действительно не знаю, что с этим делать, но, возможно, это намек...