Типичные классические Springs и Struts, ака "Якорь и выравнивание", или "Маски для автосигнализации" - это единственный вид управления размером, который я понимаю. Однако в XCode 4.6 "автозапуск" с использованием ограничений, введенных в iOS 6, является по умолчанию, и он усложняет некоторые простые вещи, делая возможным целый мир новых аранжировок, как только вы узнаете, как это сделать. (Чтобы быть ясным, некоторым пользователям может потребоваться простое представление, работающее без борьбы с автоаварийными сражениями, поэтому на раннем этапе Мэтта было предложено обход Autolayout, который воспроизводится ниже)
iOS 6 Ограничения компоновки, система построения интерфейса для редактирования ограничений, я не понимаю.
Если XCode Interface Builder автоматически создает ограничения (например, по краям представления), он, кажется, ведет себя так, как я понимаю.
Я не понимаю, почему в показанном здесь .xib, а также в здесь, почему я не могу получить зеленый и пурпурный регионы, чтобы поддерживать постоянную границу (белая область между ними), которая не становится толще и не тоньше, независимо от того, что происходит с размером представления.
Это означает, что мне нужно, чтобы зеленая область не изменялась по вертикали и изменялась только горизонтально, но она настаивала на том, чтобы привязать себя к нижней части формы и, начиная с нового пустого ножа, восстановит конструктор интерфейса, чтобы он заметил смежность зелёных и пурпурных точек снова, как только построитель интерфейсов стал "глупым", он настаивает только на определении нижнего края зеленого вида с точки зрения его расстояния от нижнего края его родительского представления и не будет (для любого количества возиться) в противном случае используйте простые операции перетаскивания. Я также экспериментировал с командами Pin и не нашел команду pin, которая работает.
Никаких боевых действий с меню компоновщика интерфейса или перетаскивания, по-видимому, недостаточно, чтобы заставить его отказаться от одного из ограничений. Я не могу понять, что я должен делать. Удалить ограничение? Как? Насколько мне известно, ограничения не могут быть удалены, как на панели IB Objects, так и в инспекторе Utilities → Size. Существует опция удаления, но она отображается серым цветом в раскрывающемся меню, которое появляется, когда вы нажимаете кнопку значка "шестерня" в области ограничений.
В идеале мне бы это понравилось, если зеленая область изменилась, так как вид стал шире, но не так, как он становится выше или короче. Я думал, что это очевидно в любом другом инструменте, но в XCode + Autolayout он либо не изменяет размер, либо изменяет размер во всех четырех направлениях. Я не могу удалить или удалить ограничения, которые делают то, что я не хочу делать. У вас должно быть четыре ограничения для каждого представления, которое находится внутри другого представления?
(Обновление 1: вы не можете удалить любое ограничение, которое приведет к двусмысленному или неуказанному макету.)
(Обновление 2: Иногда, если панель uiview не привязывается к родному брату, удаление этого uiview и повторного попытки позволит ему естественным образом "привязать" к родному брату, и ограничение будет сделано относительно объекта представления sibling вместо родителя.)
(Обновление 3: Мэтт удалил свое обходное решение, я воспроизвел его ниже.)
Обходной путь для людей, которые не хотели автозапуска в первую очередь, и кто просто хотел вернуть старые пружины и стойки:
Шаг 1: Отключить автоспуск:
Шаг 2: Выберите правильные маски авторезистировки: