Как я знаю, когда разделенное представление закончило свою разметку?

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

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

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

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

0 ответов

Другие вопросы по тегам