2014-09-17 13 views
11

Mój projekt wymaga, aby przycisk był wyśrodkowany między dwoma innymi obiektami. Jeden z obiektów znajduje się w pionowym środku widoku (zielony). Drugi obiekt znajduje się w pewnej odległości od dolnej krawędzi (zielony). Teraz zadaniem jest wyśrodkowanie trzeciego obiektu (czerwonego) pomiędzy dwoma pozostałymi. Używam nowych ograniczeń xcode6 i mój widok jest w trybie WRegular hRegular. Byłoby to łatwe z kodem, ale staram się użyć storyboardu, aby to osiągnąć.Ograniczenia dla środka i obiektu między dwoma obiektami

enter image description here

+0

dla iOS9 sprawdzić http://stackoverflow.com/a/33733753/ 1067147 – WINSergey

Odpowiedz

16

Istnieje kilka podejść:

  • w IOS 9 najprostszym byłoby określenie pionową UIStackedView z distribution z „równym odstępów” i addArrangedSubview trzy okrągłe subviews

  • Inną opcją w iOS 9 byłoby utworzenie dwóch UILayoutGuide (które reprezentowałyby dwa znaki zapytania na twoim obrazie) Dodaj je do współużytkowanego super-widoku za pomocą addLayoutGuide i zdefiniuj je tak, aby miały taki sam rozmiar jak jeden inny. Odpowiadająca VFL może wyglądać następująco:

    "V:|[greenView1(==100)]-[layoutGuide1]-[redView(==50)]-[layoutGuide2(==layoutGuide1)]-[greenView2(==greenView1)]|" 
    
  • We wcześniejszych wersjach iOS, zamiast UILayoutGuide, można po prostu stworzyć dwa widoki „przestrzeń” (UIView z jasnym tle, dzięki czemu nie są one widoczne), a następnie zdefiniować ograniczenie takie, że ich wysokości są identyczne, a następnie definiują wiązania wertykalne między pięcioma widokami (trzy okręgi i dwa widoki rozdzielające) ze stałą zerową.

    To może wyglądać następująco:

    IB scene

    Zrobiłem te widoki „spacer” widoczny, aby zilustrować ten pomysł, ale oczywiście chcesz ustawić je w sposób przejrzysty, więc nie można zobaczyć ich w interfejsie użytkownika.

    To jest logicznie równoważne podejściu UILayoutGuide w iOS 9, z wyjątkiem, że poglądy „spacer” UIView tylko nosić trochę większe obciążenie niż UILayoutGuide. Ale w wersjach iOS sprzed 9 jest to powszechne podejście do tego problemu.

+4

Możesz to zrobić z jedną spacją. Przypnij górę elementu dystansowego do dolnej części górnego zielonego koła. Przypnij spód elementu dystansowego do górnej części dolnego zielonego koła. Przypnij pionowe centrum czerwonego koła do pionowego środka przekładki. –

+0

Uzgodnione. Wiele sposobów na skórowanie kota. Używam pojedynczych spacerów, aby działały z więcej niż trzema okręgami bez radzenia sobie z mnożnikami (choć teraz możesz to zrobić). – Rob

+0

Oba świetne rozwiązania! Podoba mi się, że w pierwszym rozwiązaniu czerwony przycisk nie musi być dzieckiem z widoków spacerów. Dziękuję Ci. –

0

Przyszedłem z najłatwiejszym podejściem.

newly added view is in blue color. and in my case label should be in center

Wystarczy wykonać następujące kroki:

  1. dodać widok między nimi dwa koła
  2. dodać swoją tylną i przednią przestrzeń. (w moim przypadku zero do podglądu)
  3. dodać górną i dolną przestrzeń z okręgów.
  4. teraz umieścić czerwone kółko w ostatnim czasie został dodany
  5. uczynić go poziomo i pionowo od centrum Alrignment Menu

alignment

Powiązane problemy