Ограничение «Ширина равна высоте» в Интерфейсном Разработчике

93

Я не могу найти способ создать ограничение «квадрат», означающее «ширина равна высоте» в Интерфейсном Разработчике. Думаю, можно программно добавить такое ограничение. Что я могу сделать в IB? Может я просто этого не вижу? Это кажется банальным, но я не могу его найти.

Демоническая смерть
источник
Я помню, как Питер Аммон в WWDC'12 говорил о том, что «как можно больше полагайтесь на Interface Builder». Какая ирония.
DemoniacDeath
4
Да, я думаю, что в реализации ограничений макета все еще не хватает нескольких вещей. Кажется, они предоставили нам доступ к большинству параметров, но не к множителю, который был бы полезен для многих вещей.
rdelmar 03
Но становится все лучше и лучше! Я имею в виду, что Auto Layout был представлен менее 3 лет назад, и, с моей точки зрения, поддержка в настоящее время действительно хорошая.
Лукас Кубанек

Ответы:

188

Обновить Xcode 5.1b5

ширина равна высоте

Ctrl + щелчок и перетаскивание из вида и отпускание, пока указатель находится над видом. Выберите «Соотношение сторон». Это создаст ограничение, в котором первым и вторым элементом будет представление.


До Xcode 5.1

Вы не можете, потому что в редакторе ширины / высоты отсутствуют поля, относящиеся к другому свойству или устанавливающие соотношение:

ограничение ширины

Следовательно, вы не можете выразить следующий код в Интерфейсном Разработчике:

CGFloat ratio = 1.0;
NSLayoutConstraint *constraint = [NSLayoutConstraint
    constraintWithItem:myView
    attribute:NSLayoutAttributeWidth
    relatedBy:NSLayoutRelationEqual
    toItem:myView
    attribute:NSLayoutAttributeHeight
    multiplier:ratio
    constant:0];
constraint.priority = 1000;
[myView.superview addConstraint:constraint];
Яно
источник
1
Спасибо за последнее обновление. Xcode 5.1 beta 5 фактически позволяет вам устанавливать ограничения соотношения сторон в IB, но когда я пытаюсь скомпилировать проект, я получаю следующую ошибку: Ограничения соотношения сторон с версиями Xcode до 5.1 . Так что, возможно, нам придется дождаться финальной версии 5.1. То же самое с тобой, @Jano?
Лукас Кубанек
Да, изменения в XIB не имеют обратной совместимости. Если вы редактируете с помощью 5.1, вы не можете вернуться к более ранним версиям.
Jano
Итак, вы можете скомпилировать xib? Для меня это не работает даже с Xcode 5.1 beta 5.
Лукас Кубанек
1
@ onmyway133 создать ограничение между двумя представлениями и установить множитель 1: 2.
Jano
3
В Xcode 7 нажмите Ctrl + щелчок, перетащите из представления и отпустите поверх себя, а затем выберите Соотношение сторон
inorganik
2

Добавьте новое ограничение, соотношение сторон 1: 1 для элемента пользовательского интерфейса, как на изображении.

Установите соотношение сторон 1: 1

user550088
источник
0

Для начала перетащите элемент управления по диагонали от кнопки к себе. Появится контекстное меню, в котором вы можете добавить ограничения по ширине и высоте. Shift + щелчок по каждому; появится галочка, указывающая, что вы добавили ограничение. (Если вы случайно закроете диалоговое окно перед добавлением обоих, ничего страшного, просто повторите шаг перетаскивания и установите другой):

введите описание изображения здесь

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

введите описание изображения здесь

АбдельраЗек
источник