2015-09-18 14 views
20

Używam UIStackView w iOS 9 SDK. Wysokość widoku stosu wynosi 44 punkty. Mam UILabel i UIView wewnątrz StackView jak pokazano poniżej:Regulacja wysokości UIV w środku Kontrola UIStackView

enter image description here

Teraz chcę zrobić zielony widok znacznie mniejszy niż 44 .. podobnie jak 20. W jaki sposób można to zrobić?

UPDATE: Bez UIStackView jestem coraz łamanie ograniczenia:

[GT.BubbleView:0x14536610] (Names: '|':UITableViewCellContentView:0x14536fd0)>", 
    "<NSLayoutConstraint:0x146b7300 GT.BubbleView:0x14536610.trailing == UITableViewCellContentView:0x14536fd0.trailingMargin>", 
    "<NSLayoutConstraint:0x146c4000 'UIView-Encapsulated-Layout-Width' H:[UITableViewCellContentView:0x14536fd0(286)]>" 

)

+0

Czy możesz wyjaśnić, dlaczego w tej sytuacji potrzebujesz widoku stosu? Wygląda na to, że masz całkiem podstawową konfigurację. Co masz nadzieję osiągnąć? –

Odpowiedz

15

Jeśli próbujesz osiągnąć kwadrat 20x20, jak ten poniżej:

enter image description here

Następnie wszystko, co musisz zrobić, to dodać kolejne UIView do swojego zielonego widoku. Ustaw rozmiar UIView na 20x20 punktów. Następnie zmień tło małego widoku na zielone, a tło większego widoku, aby je wyczyścić.

To powiedziawszy, to rozwiązanie nie wymaga widoku stosu i prawdopodobnie zbytnio komplikuje twój interfejs użytkownika. Polecam zamiast tego używać tylko autolayout.

Stackviews są najbardziej przydatne podczas

  1. chcesz, aby skompensować zmiany orientacji urządzenia,
  2. chcą układać wiele rzeczy na wierzchu od siebie nawzajem,
  3. chcesz utworzyć bardzo skomplikowany układ z wieloma elementami, ale mający powtarzalne wzory , lub
  4. po prostu chcą być w stanie usunąć element lub dodać element z samą korektą rozmiarów

Lista ta nie jest wyczerpująca, ale powinna dać ci pojęcie, kiedy i dlaczego chcesz użyć widoku stosu.

Poza komórką prototypową

To zachowanie jest trywialne. można po prostu ustawić ograniczenia na widoku: enter image description here '

a następnie ustawić ograniczenia na stackview: enter image description here

nadzieję, że to pomaga, Pozdrawiam!

+0

Niestety, kiedy ustawiam 20-punktową szerokość i wysokość, wysokość jest całkowicie ignorowana, ponieważ przyjmuje wysokość kontrolki UIStackView. –

+0

Próbowałem nawet całkowicie usunąć UIStackView, ale potem dostaję ograniczenia łamania, które nie mam pojęcia, co to znaczy. Widok zielony nigdy się nie wyświetla. –

+0

Dzięki! Usunąłem UIStackView i dodałem ograniczenia ręcznie, a teraz działa! –

23
  1. Najpierw trzeba dodać UIStackView na cell enter image description here

  2. trzeba dodać ograniczenia do swojej UIStackView enter image description here

  3. Dostosuj UIStackView enter image description here

  4. Drag & Kropla UILabel do swojej UIStackView enter image description here

  5. następnie przeciągnij & Spadek UIView do swojej UIStackView enter image description here

  6. Dodaj green-UIView jak podrzędny do pink UIView enter image description here

  7. Teraz można dodać kilka ograniczeń do green-UIView enter image description here enter image description here

  8. Teraz można uruchomić aplikację na symulatorze lub urządzenia enter image description here enter image description here

    Zawiadomienie, że nie dodaje się żadnych ograniczeń dla UILabel.

+0

Dzięki za szczegółowe zrzuty ekranu! Niestety, kiedy umieściłem UIView wewnątrz UIStackView, to ma wysokość UIStackView. Próbowałem przeciągnąć i zmienić wysokość UIView, ale zawsze resetuje się ponownie do wysokości UIStackView. –

+0

Zaczekaj chwilę! Dodałeś bardzo mały stackview dla tego zielonego widoku. Potrzebuję również dodać UILabel wewnątrz UIStackView powinienem używać wielu stackviews. –

+0

Dzięki! Usunąłem UIStackView i dodałem ograniczenia ręcznie, a teraz działa! –

0

Problem ograniczenia zerwania można łatwo ustalić, ustawiając priorytet ograniczeń szerokości i wysokości na 800 lub wyższy.

Powiązane problemy