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