Как я знаю, когда разделенное представление закончило свою разметку? - PullRequest
0 голосов
/ 02 марта 2019

Главное окно моего приложения содержит NSSplitView.

Мне нужно получить ширину первого упорядоченного подпредставления разделенного вида (расположенного слева), чтобы выполнить некоторые обновления пользовательского интерфейса.

Я пытался получить это значение в двух разных местах:

  1. в методе windowDidLoad() контроллера окна
  2. в 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.Я действительно не знаю, что с этим делать, но, может быть, это намек ...

Identity Inspector Screenshot

...