Мне нужно понять, как NSView выполняет автоматизацию своих представлений. Я настроил все в IB, и мои подзаголовки изменяют размер красиво (когда я изменяю размер окна с помощью мыши). Однако, если я сделаю [myMainView setFrame:]
с моим новым прямоугольником, ничего не произойдет. Все мои под-представления по-прежнему являются оригинальным размером (хотя основной вид имеет правильные размеры). Ребенок resizeWithOldSuperviewSize:
получает вызов, но он по-прежнему не соответствует размеру.Операция автоматического анализа NSView
У меня есть экран с какао-элементами на экране (экран №1), ярлык, изображение, видео. Для этих элементов существует четко определенная компоновка. Я настроил автоматическое поведение через интерфейс Builder, который работает очень хорошо. Изменение размера основного окна изменяет размер элементов удовлетворительным образом.
Теперь пользователь нажимает кнопку «Далее», после чего набирается второй экран элементов (экран № 2). Мои макеты построены на основе канонического экрана (скажем, 800x600). Но теперь окно больше (или меньше), потому что оно было изменено на экране # 1. Таким образом, элементы теперь занимают небольшую площадь в окне, вместо того, чтобы быть соответствующим размером, чтобы заполнить доступное пространство. Я хочу масштабировать эти элементы.
Я не понимаю, как работает авторезистор? Как я могу запускать автоматическое оборудование под NSView вручную?
Есть две вещи, которые я могу сделать:
- вручную изменять размер элементов на основе текущего размера экрана по отношению к исходному размеру. Этот параметр не является моим фаворитом, потому что, по-видимому, я вынужден переписать код, который уже работает в NSView (поведение автоматического анализа
- Моим вторым вариантом является вызов вышеупомянутой магии авторазрешения NSView. Документация подразумевает, что [NSView setFrame:] будет сделайте это для меня. То, что я пробовал, изменил размер моего содержимого на исходный экран (800x600), визуализировал мои элементы, а затем изменил его размер до текущего размера окна. Концептуально ли это не идентично ручному изменению размера окна? видимому, не будет. Опять же, этот вариант является предпочтительным, поскольку он минимизирует объем кода, который тэ быть записан и сохранен.
Try [resizeSubviewsWithOldSize:] (http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/Classes/NSView_Class/Reference/NSView.html#//apple_ref/occ/instm/NSView/resizeSubviewsWithOldSize :) или [setAutoresizesSubviews:] (http://developer.apple.com/documentation/Cocoa/Reference/ApplicationKit/Classes/NSView_Class/Reference/NSView.html#//apple_ref/occ/instm/NSView/setAutoresizesSubviews :). –
Я не уверен, что вы имеете в виду здесь. Вызывается resentSubviewsWithOldSize родителя, setAutoresizesSubviews имеет значение yes. Можете ли вы дать несколько советов? – EightyEight
Первый из них - если autoresizesSubviews установлен в YES, то resizeSubviewsWithOldSize: должен получить вызов автоматически. Поскольку у вас есть это так, и это происходит, я тоже в тупике. Сожалею. –