2015-10-05 33 views
6

Co usiłuję osiągnąć

chcę mieć dwa widoki równej wysokości ustawione pionowo do wszystkich regularnych Heights. Jednak w przypadku Compact Heights chcę, aby widoki były ułożone poziomo. Jest to przedstawione na poniższym obrazie:Jak naprawić brakujące/sprzecznych ograniczeń dla wAny Hany przy użyciu różnych klas wielkości

enter image description here

Aby to zrobić, dodałem ogólnych ograniczeń w klasie wielkości wAny-Hany, które mają zastosowanie do wszystkiego. Następnie dodałem określone ograniczenia dla klas wielkości wAny-hRegular i wAny-hCompact. To zadziałało dobrze dla wAny-hRegular i wAny-hCompact (i dla testowania aplikacji w symulatorze), ale pozostawiło mnie z brakującymi ograniczeniami w WAny-hAny. Jeśli dodam brakujące więzy w WAny-hAny, wtedy dostaję sprzeczne ograniczenia w WAny-hRegular lub wAny-hCompact. Nie wiem, jak pozbyć się błędów.

Poniżej znajduje się bardziej szczegółowe wyjaśnienie, co dokładnie zrobiłem.

Jak starałem się zrobić to

udało mi się dostać coś, co działa w symulatorze, wykonując następujące kroki.

wAny Hany

enter image description here

Dla dowolnej szerokości dowolnej wysokości ustawić 4 następujące ograniczenia:

enter image description here

To znaczy, ja przypięte niebieskiego na górze i po lewej stronie Przygwoździłem czerwoną na prawo i na dole. Bez względu na to, jaka klasa wielkości jest używana, te ograniczenia są zawsze potrzebne.

wAny hRegular

enter image description here

Dla dowolnej szerokości Regular Wysokość dodałem 4 następujące ograniczenia:

enter image description here

To znaczy, ja przypięte niebieski w prawo i czerwony do lewo. Również przypięłam górną krawędź czerwonej do dolnej krawędzi niebieskiego. I zrobiłem czerwień i błękit równych wysokości. To rozwiązuje wszystkie problemy związane z więzami dla regularnej wysokości.

wAny hCompact

enter image description here

Dla dowolnej szerokości Compact Wysokość dodałem 4 następujące ograniczenia:

enter image description here

To znaczy, ja przypięte niebieskiego na dole i czerwony do szczyt. Również przypięłam prawą krawędź czerwonego do lewego brzegu niebieskiego. I zrobiłem czerwony i niebieski równej szerokości. To dba o wszystkie problemy z ograniczeniami dotyczące zwartej wysokości.

Problem

Z powyższej konfiguracji wszystko działa tak jak powinno w Storyboard podglądu (patrz wyżej pierwsze zdjęcie) oraz w symulatorze dla wszystkich rozmiarów, które ja testowałem.

Jednak w Builder interfejsu otrzymuję następujące brakujące błędy ograniczenie dla wAny Hany Wielkość klas:

enter image description here

To trochę Catch-22, bo gdy próbuję dodać brakujące ograniczenia tworzą następnie sprzeczne ograniczenia z ograniczeniami klasycznej lub zwartej klasy. Oto Compact jako przykład:

enter image description here

Jak mogę rozwiązać ten problem?

Odpowiedz

5

Myślę, że trzeba dodać konkretne ograniczenia tylko dla klas wielkości wAny-hCompact. Upewnij się, że specjalne ograniczenia są poprawnie zainstalowane.

Zobacz zdjęcie poniżej.

enter image description here

+1

Masz rację. Musiałem tylko ustawić wszystkie ograniczenia AnyAny, a następnie dodać specjalne ograniczenia w AnyCompact. Następnie odinstalowuję sprzeczne ograniczenia w AnyCompact. Aby usunąć ograniczenia, musiałem przestudiować odpowiedź @ AkshaySunderwani (np. Dokumentacja). Nie mogłem po prostu odznaczyć 'zainstalowany', ponieważ to by go odinstalowało dla każdej klasy wielkości. Musiałem dodać określoną klasę wielkości (AnyCompact) w inspektorze ograniczeń, a następnie odinstalować ją. – Suragch

4

Dzieje się tak, ponieważ istnieją dwa różne rodzaje ograniczeń dla pojedynczego widoku w dwóch różnych klasach wielkości. Tak więc raczej problem z brakującymi/sprzecznymi ograniczeniami dla pojedynczego użytkownika, gdy używasz różnych klas wielkości, spróbuj odinstalować dodatkowe ograniczenie z klasy WAny hAny, które zostały dodane w wAny hCompact lub dowolnej innej klasie wielkości.

Można to zrobić tak:

kroki:

  1. Jeśli obszar narzędzia nie jest otwarty, wybierz polecenie Widok> Narzędzia> Pokaż Utilities.
  2. Wybierz widok zawierający wiązanie, które chcesz zmienić.
  3. Wybierz wiązanie, które chcesz zainstalować lub odinstalować. Inspektor więzi otwiera się w obszarze narzędzi.
  4. W inspektorze ograniczeń kliknij przycisk Dodaj (+) obok właściwości Zainstalowana i wybierz rozmiar żądanej klasy z wyskakującego menu.

enter image description here

Po wybraniu klasy rozmiar z menu podręcznego, nowa pozycja wejście do tej klasy wielkości pojawia się w inspektora ograniczeń.

enter image description here

Uwaga: Jeśli istnieje już istniejący element wejścia do żądanej klasy wielkości, pomiń ten krok.

  1. Zaznacz pole wyboru dla żądanej linii wprowadzania, aby zainstalować ograniczenie dla tej klasy wielkości. Usuń zaznaczenie pola wyboru, aby odinstalować ograniczenie.

Obiekt środowiska wykonawczego dla usuniętego wiązania nadal jest tworzony. Jednak nie jest uwzględniony w hierarchii widoku.

Inspektor kontroli więzów pokazuje jeden lub więcej elementów pozycji, które pokazują, czy ograniczenie zostało lub nie jest zainstalowane dla klasy wielkości. Każda linia wprowadzania dla klasy wielkości rozpoczyna się od przycisku Usuń (x), po którym następuje klasa wielkości, a następnie do pola wyboru wyboru. Klasa wielkości jest pokazana dla szerokości (w) i wysokości (h).C jest używane dla klasy kompaktowej, R dla zwykłej klasy wielkości i Dowolnej dla dowolnej klasy wielkości.

Możesz znaleźć szczegółowe wyjaśnienie tego apple document on installing and uninstalling constraint for size classes.

1

Wystarczy można łatwo osiągnąć za pomocą UIStackView, który jest dostępny z Xcode 7 i powyżej.

Apple Documentation of UIStackView

A good Tutorial on UIStackView

+0

To są dobre linki do 'UIStackView' i byłoby bardzo łatwo zrobić układ poziomy lub pionowy indywidualnie. Jednak nie jest od razu oczywiste, w jaki sposób widok stosu automatycznie zmieniał się z pionowego na poziomy (lub odwrotnie) w zależności od rozmiaru i orientacji urządzenia. Czy mógłbyś podać nieco więcej odpowiedzi? – Suragch