2012-10-19 14 views
5

interfejs konstruktora mogę uzyskać „Vertical Space”, który pasuje do „standardowej” odstępy między wyrazami „pinningu”:Jak ustawić standardowe odstępy między UIViews w kodzie z automatycznym układem?

enter image description hereenter image description here

W języku Visual więzów mogę osiągnąć to samo z:

V:[top]-[bottom] 

Jak dodać standardowe odstępy między dwoma widokami w kodzie?

szukam czegoś takiego, które mogą pojawić się w UIViewController:

NSLayoutConstraint *spacing = ??? 
[self.view addConstraint spacing]; 
+0

Dlaczego nie możesz użyć formatu wizualnego "w kodzie", czy jest to tylko pytanie o ciekawość (co jest w porządku przeze mnie!) – jrturton

+0

@jrturton, wszystkie moje pozostałe ograniczenia są w kodzie. Robię to, ponieważ znalazłem to stwierdzenie w dokumentacji: "Istnieją ograniczenia, których nie można wyrazić w składni formatu wizualnego, chociaż większość ograniczeń, które są użyteczne w rzeczywistych interfejsach użytkownika, może być. Jednym z użytecznych ograniczeń, których nie można wyrazić, jest: stałe proporcje obrazu (na przykład imageView.width = 2 * imageView.height). "Dopóki nie dowiem się, co robię i wszystkie ograniczenia języka wizualnego stają się jasne, chciałem zrobić wszystko w kodzie jako pierwsze. –

Odpowiedz

2

mieszanie i dopasowywanie formatu ograniczeń wizualnych i bardziej gadatliwy styl tworzenia pojedynczego ograniczenia (to, o czym myślę, że powołujesz się, gdy mówisz "w kodzie") jest w porządku - w rzeczywistości w rozmowach WWDC o automatycznym układzie, "preferowana" kolejność tworzenia więzów była określona jako:

  • Interfejs budowniczy
  • Format wizualna
  • pojedyncze ograniczenie styl

chyba że potrzebie dodatkowa moc i elastyczność, że jednolity styl ograniczenie daje (i istnieje wiele miejsc formacie gdzie wizualny nie działa, jak dotąd, z mojego doświadczenia), należy użyć formatu wizualnego. Wygląda na to, że zbliżasz się do powyższej listy od dołu do góry, zamiast od góry do dołu.

Jeśli chcesz ułożyć widoki ze standardowym odstępem, a nie używasz IB, to format wizualny miałby sens. Jak mówi Rob, nie ma stałej dla "standardowego" odstępu i robisz o wiele więcej pracy dla siebie, nalegając na pojedyncze ograniczenia dla wszystkiego.

+0

Skończyłem z mieszanym stylem wizualnym z jednym wyjątkiem - relatywnym ograniczeniem rozmiaru, którego nie można wyrazić w niczym innym niż kodem. To znacznie uprościło kod ograniczenia. Dobra decyzja. –

5

nie próbowałem to:

[self.view addConstraint:[NSLayoutConstraint 
    constraintWithItem:topView 
    attribute:NSLayoutAttributeBottom 
    relatedBy:NSLayoutRelationEqual 
    toItem:bottomView 
    attribute:NSLayoutAttributeTop 
    multiplier:1 
    constant:8]]; 
+5

Czy to nie jest tylko twarde kodowanie przestrzeni 8? Myślę, że OP jest po jakiejś stałej systemowej lub słowie kluczowym, aby opisać standardowe odstępy. – jrturton

+0

@jrturton Nie mogłem znaleźć stałej dla niego w plikach nagłówkowych. –

+0

@jrturton, Jeśli istnieje stała systemowa, która wyraża standardowe odstępy, byłaby to dobra opcja. Ale wolałbym nie używać bezpośrednio cyfry 8. –

Powiązane problemy