Autolayout: Dodaj ograniczenie do superview, a nie Top layout Guide?

Mam UIView w moim UIViewController w storyboard, który chcę dodać ograniczenie do przestrzeni, która wyświetla odległość od górnej krawędzi.

Teraz, kiedy wykonam zwykły przez ctrl + przeciągnij do głównego widoku Viewcontrollera dostaję tylko opcję, aby ustawić go na top layout guide.

Jest to dla mnie problem, ponieważ w pewnym momencie w aplikacji IM zamiar przenieść główny widok w górę około 20-50px i co się wtedy dzieje, że widok mam nie będzie się poruszać... ponieważ nie jest dopasowany do superview.

Jak mogę to zrobić ręcznie w storyboardzie lub muszę go dodać programowo?

Im za pomocą xcode 6.

Author: Arbitur, 2015-02-27

7 answers

Po prawej stronie wartości stałej ograniczenia znajduje się strzałka. Jeśli klikniesz na nią, pojawi się menu, w którym możesz wybrać, co chcesz, aby Twoje ograniczenie było względem. Jeśli wybierzesz "Widok", to przypisze go do góry widoku.

Tutaj wpisz opis obrazka

 293
Author: Pavel Gurov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-03-16 13:40:00

Powinieneś być w stanie to zrobić, podświetlając żądany widok w storyboardzie, a następnie wybierając Editor > Pin > Top Space to Superview w górnym menu.


To jest nieaktualne w XCode 7, Zobacz odpowiedź @ PaulGurov zamiast.

 57
Author: dan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-21 11:04:41

Można również dodać, że jeśli widok, który próbujesz przypiąć, nie jest bezpośrednim podglądem widoku, do którego chcesz go przypiąć, sugerowane podejście nie jest naprawdę poprawne. Powiedzmy, że hierarchia widoku wygląda tak i chcesz przypiąć widok obrazu (Parallax Image View w tym przypadku) do widoku kontrolera widoku (View w tym przypadku).

Tutaj wpisz opis obrazka

Aby to zrobić wystarczy kontrolować + przeciągnij z Parallax Image View do View. Który przedstawia domyślne wybory, w których Zobacz Vertical Spacing to Top Layout Guide, aby przypiąć Parallax Image View do górnego przewodnika po Układzie.

Tutaj wpisz opis obrazka

To, co chcesz, to przypiąć go do góry (marginesu) widoku. Aby to zrobić, musisz przełączyć się na inny zestaw ograniczeń naciskając Alt

Tutaj wpisz opis obrazka

 10
Author: Zhivko Bogdanov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-05-25 13:24:17

Miałem już mnóstwo ograniczeń i chciałem je tylko zmienić, a nie złamać. Okazuje się, że jeśli dwukrotnie klikniesz na ograniczenie do edycji, a następnie kliknij na element, który ma ".Margin", możesz po prostu wyłączyć "względem marginesu", wybierając ten element.

Wybierz względny margines

 2
Author: christophercotton,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-02-17 15:22:31

Odpowiedź dana działa. Chciałem tylko powiedzieć, że jeśli ustawisz swój widok w storyboardzie NA y

Tutaj wpisz opis obrazka

Tutaj wpisz opis obrazka

 1
Author: oren,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-02-27 17:04:11

Jeśli wysokość widoku jest ustawiona na 0 przez przypadek, pionowa Spacja do górnej linii układu nie pojawi się. Pojawi się jednak pionowy Przewodnik po Układzie spacji do dołu, który musiał mieć sens dla kogoś wewnątrz Apple około 2004 roku.

 0
Author: Gabriel Jensen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-13 20:05:04

Żadna z powyższych odpowiedzi nie zadziałała dla mnie, zamiast tego muszę zrobić hack, aby ustawić górę mojego subview za pomocą góry superview zamiast z przewodnikiem Top layout.

  • najpierw ustaw centrum subview pionowo za pomocą superview.
  • następnie zmień Center y ograniczenia dla subview oraz superview na Top constraint.

Możesz już iść.

 0
Author: Jas_meet,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-17 11:34:49