Ograniczenie „Szerokość równa się wysokości” w programie Interface Builder

93

Nie mogę znaleźć sposobu na utworzenie ograniczenia „kwadratowego”, co oznacza, że ​​„szerokość równa się wysokości” w programie Interface Builder. Myślę, że możliwe jest programowe dodanie takiego ograniczenia. Czy jest coś, co mogę zrobić w IB? Może po prostu tego nie widzę? Wydaje się trywialne, ale nie mogę tego znaleźć.

DemoniacDeath
źródło
Pamiętam, jak Peter Ammon mówił o „Polegaj na Interface Builder tak bardzo, jak to możliwe” w WWDC'12. Jak ironicznie.
DemoniacDeath
4
Tak, myślę, że w implementacji ograniczeń układu wciąż brakuje kilku rzeczy. Wygląda na to, że dali nam dostęp do większości parametrów, ale nie do mnożnika, który przydałby się do wielu rzeczy.
rdelmar
Ale jest coraz lepiej! Chodzi mi o to, że Auto Layout został wprowadzony niecałe 3 lata temu iz mojego punktu widzenia wsparcie jest obecnie naprawdę dobre.
Lukas Kubanek

Odpowiedzi:

188

Zaktualizuj Xcode 5.1b5

szerokość równa się wysokości

Ctrl + kliknij i przeciągnij z widoku i zwolnij, gdy wskaźnik znajduje się nad widokiem. Wybierz opcję „Format obrazu”. Utworzy ograniczenie, w którym pierwszy i drugi element jest widokiem.


Przed Xcode 5.1

Nie możesz, ponieważ w edytorze szerokości / wysokości brakuje pól, które mogłyby odnosić się do innej właściwości lub ustawić stosunek:

ograniczenie szerokości

Dlatego nie można wyrazić następującego kodu w programie 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];
Jano
źródło
1
Dzięki za ostatnią aktualizację. Xcode 5.1 beta 5 faktycznie pozwala na ustawienie ograniczeń proporcji w IB, ale kiedy próbuję skompilować projekt, pojawia się następujący błąd: Ograniczenia współczynnika proporcji z wersjami Xcode starszymi niż 5.1 . Może więc musimy poczekać na ostateczną wersję 5.1. To samo dla ciebie, @Jano?
Lukas Kubanek,
Tak, zmiany w plikach XIB nie są wstecznie kompatybilne. Jeśli edytujesz w 5.1, nie możesz wrócić do mniejszych wersji.
Jano,
Więc jesteś w stanie skompilować xib? Nie działa nawet z Xcode 5.1 beta 5 dla mnie.
Lukas Kubanek,
1
@ onmyway133 stwórz ograniczenie między dwoma widokami i ustaw mnożnik na 1: 2.
Jano
3
W Xcode 7, ctrl + kliknij przeciągnij z widoku i zwolnij nad sobą, a następnie wybierz współczynnik proporcji
nieorganik
2

Dodaj nowe ograniczenie, współczynnik proporcji do 1: 1 w elemencie interfejsu użytkownika, jak na obrazku.

Ustaw współczynnik proporcji na 1: 1

user550088
źródło
0

Aby rozpocząć, kontroluj przeciąganie po przekątnej od przycisku do samego siebie. Pojawi się menu kontekstowe, w którym można dodać ograniczenia szerokości i wysokości. Shift + kliknij każdy; pojawi się znacznik wyboru wskazujący, że zostało dodane ograniczenie. (Jeśli przypadkowo zamkniesz okno dialogowe przed dodaniem obu, to jest OK, po prostu powtórz krok przeciągania i ustaw drugi):

wprowadź opis obrazu tutaj

Przy pierwszym dodaniu te ograniczenia przyjmują bieżącą szerokość i wysokość przycisku, więc musisz dostosować każde ograniczenie, aby nadać mu bardziej odpowiednią wartość. Będziemy musieli to robić pojedynczo, chociaż nasz obraz jest kwadratowy, więc pamiętaj, aby użyć tej samej stałej wartości w obu ograniczeniach, aby proporcjonalnie zmienić rozmiar przycisku. Kliknij dwukrotnie ograniczenie i wprowadź mniejszą wartość w jego polu stałej:

wprowadź opis obrazu tutaj

AbdelraZek
źródło