Обмеження “Ширина дорівнює висоті” в Interface Builder


92

Я не можу знайти спосіб створити обмеження "квадрат", що означає "ширина дорівнює висоті" у Interface Builder. Я думаю, це можливо додати таке обмеження програмно. Чи можу я щось зробити в IB? Може, я просто цього не бачу? Це здається дрібницею, але я не можу його знайти.


Я пам’ятаю, як Пітер Аммон говорив про “Покладатися на конструктор інтерфейсів якомога більше” у WWDC'12. Як іронічно.
DemoniacDath

4
Так, я думаю, що в реалізації обмежень макету ще бракує декількох речей. Здається, вони надали нам доступ до більшості параметрів, але не до множника, що було б корисно для багатьох речей.
rdelmar

Але це стає все краще і краще! Я маю на увазі, що Auto Layout було введено менше 3 років тому, і з моєї точки зору підтримка сьогодні дуже хороша.
Лукас Кубанек

Відповіді:


187

Оновіть Xcode 5.1b5

ширина дорівнює висоті

Ctrl + клацання та перетягування з подання та відпускання, поки вказівник знаходиться над видом. Виберіть "Співвідношення сторін". Це створить обмеження, де першим і другим елементом є вигляд.


До Xcode 5.1

Ви не можете, оскільки в редакторі ширини / висоти відсутні поля для відношення до іншої властивості або встановлення співвідношення:

обмеження ширини

Таким чином, ви не можете висловити такий код у Interface Builder:

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

1

Будь ласка, додайте нове обмеження, співвідношення сторін до 1: 1 для елемента інтерфейсу, як на зображенні.

Встановіть співвідношення сторін 1: 1


0

Для початку керуйте перетягуванням по діагоналі від кнопки до себе. З'явиться контекстне меню, де ви можете додати обмеження ширини та висоти. Shift + Клацніть на кожному; з’явиться галочка, яка вказує на те, що ви додали обмеження. (Якщо ви випадково відхилили діалогове вікно перед додаванням обох, це нормально, просто повторіть крок перетягування та встановіть інший):

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

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

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.