Поведение NSView с автоматическим изменением размера

Мне нужно понять, как NSView автоматически изменяет размеры своих представлений. Я настроил все в IB, и мои подпредставления изменяют размер (когда я изменяю размер окна с помощью мыши). Однако, если я сделаю[myMainView setFrame:] с моим новым прямоугольным кадром ничего не происходит. Все мои вложенные виды по-прежнему имеют исходный размер (хотя основной вид имеет правильные размеры). ДетиresizeWithOldSuperviewSize: вызывается, но он все еще не имеет соответствующего размера.

У меня на экране полно элементов какао (экран № 1), ярлык, изображение, видео. Для этих элементов есть четкое расположение. Я настроил автоматическое изменение размера с помощью Interface Builder, который работает очень хорошо. Изменение размера главного окна изменяет размеры элементов удовлетворительным образом.

Теперь пользователь нажимает кнопку «Далее», после чего должен быть нарисован второй экранный набор элементов (экран № 2). Мои макеты построены на основе канонического размера экрана (скажем, 800x600). Но теперь окно больше (или меньше), потому что оно было изменено на экране №1. Таким образом, элементы теперь занимают только небольшую область в окне, вместо того, чтобы иметь соответствующий размер для заполнения доступного пространства. Я хочу масштабировать эти элементы.

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

Я могу сделать две вещи:

Изменение размера элементов вручную на основе текущего размера экрана относительно исходного размера. Этот вариант не мой любимый, потому что, похоже, я вынужден переписать код, который уже работает в NSView (поведение авторазмераМой второй вариант - вызвать волшебство авторазмера вышеупомянутого NSView. Документация подразумевает, что [NSView setFrame:] сделает это для меня. Я попытался изменить размер моего содержимого до исходного размера экрана (800x600), отобразить мои элементы, а затем изменить его размер до текущего размера окна. Концептуально, это не идентично изменению размера окна вручную? Кажется, не быть. Опять же, эта опция предпочтительнее, потому что она минимизирует объем кода, который должен быть написан и поддерживается.

Ответы на вопрос(2)

Ваш ответ на вопрос