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


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


0

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

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

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.