2015-08-19 5 views
5

W moim przypadku mam widok wewnątrz kontrolera widoku do którego dodaje się następujące ograniczenia:Jak zrobić kwadrat widok rozmiaru z jego superview stosując układ automatycznego

  • Set początku, na końcu górne i dolne krawędzie do 0
  • Zestaw mnożnika do dolnej krawędzi do 2: 1

teraz widok znajduje się w górnej części w widoku kontrolera.

Wewnątrz tego dodam kwadratowy widok obrazu, do którego dodaje się następujące ograniczenia:

  • Ctrl przeciągnij z pola widzenia obrazu do Superview i dodał równych wysokościach i szerokościach.
  • Zmień mnożnik szerokości i wysokości, dopóki nie uzyskasz idealnego kwadratu.
  • Dodano ograniczenia się centrum pionowo i poziomo

Moi ograniczenia wydaje doskonały, ale kiedy uruchomiony w symulatorze nie uzyskać doskonały kwadrat. Poza tym widok obrazu nie zmienia rozmiaru podczas działania na różnych ekranach symulatora.

To jest moja konfiguracja:

  • klas Auto Układ i wielkość są włączone
  • używam wywnioskować rozmiar dla ujęć
  • Adaptacyjny układ jest ustawiony na dowolną dla szerokości i wysokości
  • I Próbuję uruchomić to dla symulacji 4s, 5,6 i 6+.

Spojrzałem na inne posty, ale nic nie działa.

Czy są jakieś podstawowe kroki, aby to zrobić?

enter image description here

Edycja:

Po ustawieniu> 10 ograniczeń:

enter image description here

Edycja 3: I dodaje górze, na dole, co prowadzi, na końcu Ograniczenia 2 razy, 1 niższymi niższy lub równy (priorytet 1000), drugi większy lub równy (priorytet 800) o stałej wartości 90. Nie wiem, dlaczego dla dna próbuje rozciągnąć do 90 punktów z widoku głównego, a nie kontenera widok (gre en en).

enter image description here

+2

należy użyć ograniczenie aspectRatio 1: 1 na widoku ma pozostać kwadrat, a następnie albo zawierać tylko to wysokość lub szerokość do jego rodzica, ale nie jednocześnie. –

+0

, więc po prostu ustaw współczynnik kształtu 1: 1 i ustaw wysokość lub proporcje proporcjonalne do widoku Superview? Robiąc to dostaję kwadrat (który jest mały), ale nie zmienia rozmiaru w zależności od ekranu, ten sam rozmiar na całym ekranie – Kobe

Odpowiedz

11

Masz widok, który musi się rozwinąć, aby wypełnić swój pojemnik, zachowując proporcje. Jest to typowy wzór z automatycznym układem.

Sztuką jest, aby korzystać z dwóch ograniczeń dla wiodących/spływu/góra/dół:

  • =10 przy niskim priorytecie

  • >=10 w wymaganym priorytet.

Kładzenie to wszystko razem, masz:

  • format obrazu 1: 1

  • Centrum X/Y w Superview

  • przednia/dolna/góra/dół do Superview = 10 (z priorytetem 750)

  • Prowadzenie/Trailin g/Góra/Dół do Superview> = 10 (w 1000 priorytet)

Istnieje również kilka rzeczy do rozważenia z UIImageView:

  • UIImageView będą miały wielkość rzeczywista zawartość w oparciu o obraz, który jest wyświetlany, dlatego należy się upewnić, że jego Priorytet przycinania zawartości jest niższy niż priorytet 750, którego używasz dla więzów =10.

  • UIImageView.contentMode określa, w jaki sposób rozmiar obrazu bazowego jest zwymiarowany w stosunku do rozmiaru obiektu UIImageView. Domyślnie jest ustawiony na UIViewContentModeScaleToFill.

+0

Działa, ale mam pytanie. Na 4s kwadrat wygląda zbyt mały, czy mogę to jakoś kontrolować? Na ekranie 6 i 5s wymiary są w porządku. – Kobe

+0

@Adrian Możesz użyć ograniczenia minimalnej wysokości na obrazie z podglądu. Np .: height = superview.height * 0,5 @ priority 900, height> = 350 @ priority 1000 – Darren

+0

@darren that worked thanks. Muszę wprowadzić 1 nowe ograniczenie, takie jak Img.height = 0.25 x [email protected], aby zwiększyć rozmiar obrazu Propionally x 0,25 muliplier jako obraz rośnie rozmiar drastycznie z iPhone 6 do 6 Plus. –

2
container view 
---------------------------------------------- 
|      |      | 
|     >=10     | 
|  imageView |      | 
|  ----------------------------  | 
|  |   |    |  |  
|  |   |    |  | 
|  |   |    |  | 
|  |   |    |  | 
|  |   |    |  | 
|- >=10 -|---------- 1:1 -----------|- >=10 -| 
|  |   |    |  | 
|  |   |    |  | 
|  |   |    |  | 
|  |   |    |  | 
|  ----------------------------  | 
|      |      | 
|     >=10     | 
|      |      | 
---------------------------------------------- 

** Jeśli chcesz możesz podać jej wysokość ImageView lub szerokość oraz o niższym priorytecie ograniczeń.

+0

Czy możesz mi powiedzieć, jak dokładnie ustawić te więzy? Dodaję tylko wiodące, końcowe, dolne i górne ograniczenia i wybieram większy lub równy i ustawię stałą na 10 lub jak? – Kobe

+0

Tak, to tak jak mówisz, a następnie dodaj współczynnik proporcji 1: 1 do obrazu (cntrl + przeciągnij) obraz do siebie. –

+0

To nie działa dla mnie. Załączam zrzut ekranu, aby zobaczyć, jak to wygląda. – Kobe

1

Miałem sukces przy użyciu tej konfiguracji.

  1. Co zrobiłem najpierw dodać ograniczenia dla środkowej X. (zignorować jedno centrum Y, mimo że jest w moim zrzucie. Będzie przerwa bez powodu kroku 2.)

  2. Potem dodano górna i dolna ograniczenie

  3. końcu dodaje proporcje ograniczenie

Kiedy animacji tego pola skalowany kwadratu prawidłowo. Jeśli chcesz, mogę przesłać projekt testowy.

enter image description here