2016-06-24 16 views
15

Mam tableView z komórkami statycznymi. Komórka zawiera ImageView, który całkowicie ją wypełnia. I mam jeszcze inne mniejsze ImageViews. Ustawiam ten widok z ograniczeniami. Mam pytanie dotyczące zmiany ograniczeń. W jaki sposób mogę ustawić różne stałe ograniczenia dla różnych rozmiarów urządzeń bez programowania, jeśli/else pętle. Czy istnieje sposób na umieszczenie go w scenorysie? Mam wiodącą ograniczenie do układu nadrzędnego na przykład z stałej wartości 10. Jest w porządku na ekranie iPhone 5, ale na iPhone 6/6 Plus ekran powinien być wyższy niż 10. iPhone5 AutolayoutiPhone6 AutolayoutJak ustawić różne wiązania Auto Layout dla różnych rozmiarów ekranów

+2

'bez programowania if/else pętle' - if/else to gałąź * * nie pętla*. –

+0

gdzie to znalazłeś? :-)) –

+1

Innym podejściem jest użycie stosunku https://github.com/onmyway133/blog/issues/35 – onmyway133

Odpowiedz

5

Wreszcie znalazłem rozwiązanie, które działa w moim przypadku.

  1. Włożyłem przejrzysty widok i dodał Align Center X/Y do Superview (obraz tła) ze potrzebne przesunięcie w sposób, który nie pasuje do mojej klatki dla plakatów (na obraz tła) - Constraints for the transparent view
  2. Następnie Załączam równą szerokość/wysokość do mojego Superview (obraz tła) dla tego przezroczystego widoku i zmieniam mnożnik na jednakowej szerokości (ręcznie wybrałem 0,61).
  3. Po tym czasie wylądowałem na moim 1 plakacie. Wyśrodkowałem również w pionie i poziomie z przesunięciem i użyłem tego zestawu wiązań - Proporcjonalna szerokość do Superview, Współczynnik proporcji.
  4. I ostatnia wystawiłam mój drugi plakat z tymi ograniczeniami. Prowadziłam do Poster1, Wyrównaj CenterY do Poster1 (z offsetem w moim przypadku) i Equal width/height.Constraints for the Poster 1/2

W rezultacie, mam naprawdę adaptacyjne autoLayout który działa prawie świetnie na iPhone 5-6-6 +

40

Bardzo łatwo. Możesz zmienić wartości stałych dla klas wielkości różnic w Storyboard. Daję ci kilka kroków, po których będziesz w stanie to pojąć.

Najpierw tworzymy stałe jak widać na tym widoku enter image description here

Dalej wybieramy stałą chcemy zmienić wartość w innych klasach wielkości. enter image description here

Nadchodzi trudna część. W kontrolerze atrybutów po wybraniu stałej można zobaczyć wartość stałej. Tuż obok znajduje się znak "PLUS (+), po lewej stronie" stałej ". enter image description here

Kliknij na niego i wybierz swoją klasę wielkości. Tutaj wybrałam wysokość regularną o regularnej szerokości, np. Dla rozmiarów iPada. enter image description here

Następnie dodajemy nową wartość. Stała, która zwykle ma wartość 61, będzie działała jako 10, gdy będzie renderowana w klasie wielkości klasy iPada. enter image description here

Oto wynik - iPhone 4 - enter image description here

iPad Air - enter image description here

Jak widać, te same stałe ma inną wartość w czasie wykonywania odpowiadającą różnych klas wielkości.

Mam nadzieję, że moje wyjaśnienie ci pomogło.

+0

Saheb, dziękuję bardzo !! Taka miła odpowiedź i całkowicie pokrywa jedną część mojego problemu - działa z urządzeniami, które mają różne SizeClasses (iPhone/iPad). I co mogę zrobić, gdy chodzi o skalowanie, ponieważ obraz tła, który wypełnia moją komórkę jest szerszy na iPhone6 ​​niż na iPhone5! powoduje to przesunięcie dwóch górnych plakatów względem obrazu tła, jak widać powyżej. –

+1

dla innych urządzeń, takich jak iPhone4 i 5, z tych samych klas wielkości można ręcznie sprawdzić i zmienić ograniczenia lub można zaprojektować swoje obrazy w tym aspekcie. –

+0

Wiem o tym rozwiązaniu i wciąż szukam uniwersalnego, które będzie działać z każdym urządzeniem ;-)) –

Powiązane problemy