Почему iPhone Interface Builder не позволяет мне устанавливать координаты X, Y UIView верхнего уровня?

Почему iPhone Interface Builder не позволяет мне установить координаты X, Y UIView верхнего уровня? (Это означает представление, прямым родителем которого является UIViewController.) Поля X и Y на вкладке «Размер представления» неактивны. Я могу изменить значения X, Y в коде во время выполнения, так почему бы и нет в Interface Builder?

Спасибо.


person Walt D    schedule 10.12.2008    source источник


Ответы (3)


Поскольку представление, принадлежащее UIViewController, заполняет доступное пространство в его родительском элементе. Его родителем будет либо UIWindow, либо представление, управляемое чем-то вроде UINavigationController или UITabBarController. Он будет позиционировать вид для вас. Если вы хотите управлять положением представления, сделайте его подвидом представления, контролируемым вашим UIViewController.

person Alex    schedule 11.12.2008
comment
В представлениях верхнего уровня в xib обычно не допускается указание X, Y. Лучшая причина, о которой я могу думать, это то, что у них нет родителя, так что вы вообще пытаетесь поместить это внутрь? - person Lily Ballard; 14.12.2008
comment
Меня это тоже очень раздражает. На мой взгляд, вы не обязательно пытаетесь позиционировать его в чем-то, скажем, вы устанавливаете фрейм по умолчанию для представления, которое затем может быть добавлено в коде как подпредставление к любому включенному представлению, которое вы хотите. - person Brad The App Guy; 07.11.2009
comment
В моем случае это это подвид представления, управляемый моим UIViewController, и я все еще не могу настроить источник. Мне бы очень хотелось, чтобы он был выровнен по нижнему краю с представлением. Однако выбор этого в инспекторе, похоже, не имеет никакого эффекта. - person Joe D'Andrea; 01.02.2011

Я согласен, что это недостающая функция в IB. Для базового использования, т.е. создания одного представления верхнего уровня для размещения в стандартном контроллере представления, конечно, нет необходимости устанавливать источник представления. Однако NIB предназначены для хранения любого количества представлений верхнего уровня в произвольном графе объектов. Поскольку это позволяет вам использовать эти представления любым способом, который вы считаете нужным, включая программное встраивание их в любое другое представление, блокировка этих элементов управления в IB является ненужным ограничением. На связанной, но забавной ноте: если вы перемещаете позиционированное представление на верхний уровень, IB сам запоминает его относительное положение для целей отображения. Однако эта позиция недоступна после загрузки NIB.

person Jiropole    schedule 20.09.2011

В Xcode 4.3.2 вы можете выбрать size->freeform в инспекторе атрибутов.

person morgancodes    schedule 20.08.2012