Autolayout: Dodać ograniczenie do superview, a nie Top Layout Guide?


112

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

Teraz, kiedy robię to zwykle, naciskając ctrl + przeciągnij do głównego widoku ViewControllera, dostaję tylko opcję ustawienia go na górny przewodnik po układzie.

Jest to dla mnie problem, ponieważ w pewnym momencie aplikacji zamierzam przesunąć główny widok w górę o około 20-50 pikseli, a wtedy widok, który mam, nie będzie się poruszał ... ponieważ nie jest dostosowany do superviewu.

Jak mogę to zrobić ręcznie w scenorysie, czy muszę dodać to programowo?

Używam Xcode 6.


Czy możesz przeciągnąć i upuścić do odpowiedniego elementu w konspekcie dokumentu po lewej stronie? - Obiekty sceny na tym zrzucie ekranu: ptgmedia.pearsoncmg.com/images/chap5_9780672335761/elementLinks/ ...
Woodstock

Próbowałem tego również, ten sam wynik
Arbitur

Odpowiedzi:


306

Po prawej stronie wartości stałej ograniczenia znajduje się strzałka. Jeśli go klikniesz, pojawi się menu, w którym możesz wybrać, do czego chcesz przypisać swoje ograniczenie. Jeśli wybierzesz opcję „Widok”, zostanie on przypięty do góry widoku.

wprowadź opis obrazu tutaj


6
Alleluja! Nie wiedziałem, co zrobię, gdy usunęli menu Editor -> Pin.
Jeremy Hicks,

4
Nie mogę uwierzyć, że wcześniej tego nie widziałem. Niesamowite.
zumzum

9
Tylko uwaga dla osób, które nie mają pojęcia jak ja -> możesz nie być w stanie wprowadzić tej zmiany, chyba że widok, do którego dodajesz ograniczenie, znajduje się poniżej górnego przewodnika po układzie. Miałem widok nad górnym przewodnikiem po układzie, a „Przewodnik po górnym układzie” nie był dostępny w menu rozwijanym. Co jest prawdopodobnie stwierdzeniem "duh" dla nie-nowicjuszy, takich jak ja :)
Ryan James

2
Chodzi o te małe subtelności Xcode. To tak dużo. :)
Marchy

Tylko krótkie wyjaśnienie, które mnie zdezorientowało: pomimo zaznaczenia obrazu z zaznaczonym przewodnikiem Top Layout Guide, jeśli chcesz przypiąć widok do góry widoku, tak jak u góry urządzenia, wybierz opcję „Widok”.
micnguyen

57

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


Jest to nieaktualne w XCode 7, zamiast tego zobacz odpowiedź @ PaulGurov.


Działa jak urok - XCode 6.3
NKorotkov

4
Usunęli „pin” z menu edytora w Xcode 7. Jakieś nowe rozwiązania?
Kyle G,

14

TL; DR: Możesz ograniczyć margines, naciskając Altklawisz na klawiaturze.


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

wprowadź opis obrazu tutaj

Aby to zrobić, po prostu Control+ Dragod Parallax Image Viewdo View. To przedstawia domyślne opcje, w których możesz Vertical Spacing to Top Layout Guideprzypiąć Parallax Image Viewdo górnego przewodnika po układzie.

wprowadź opis obrazu tutaj

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

wprowadź opis obrazu tutaj


Bardzo przydatna wskazówka. To faktycznie rozwiązało mój problem.
Machado

U mnie to działa, ale nie wiem, jak dodać wiele ograniczeń jednocześnie. Teraz muszę dodawać po kolei, żeby mieć trochę czasu.
Duc Nguyen

3

Miałem już całą masę ograniczeń i chciałem je po prostu zmienić, zamiast je łamać. Okazuje się, że jeśli dwukrotnie klikniesz ograniczenie w celu edycji, a następnie klikniesz element, który ma „.Margina”, możesz po prostu wyłączyć opcję „Względem marginesu”, wybierając ten element.

Wybierz relację do marginesu


Właśnie tego szukałem, kiedy tu przyjechałem! Dzięki
netigger

1

Odpowiedź Dana działa. Chciałem tylko powiedzieć, że jeśli ustawisz swój widok w StoryBoard na y <20 i skonfigurujesz ograniczenia za pomocą panelu pinezek, zostanie ustawiony najwyższy widok na superview:

wprowadź opis obrazu tutaj

wprowadź opis obrazu tutaj


0

Jeśli wysokość widoku zostanie przypadkowo ustawiona na 0, przewodnik układu pionowego odstępu do góry NIE pojawi się. Pojawi się jednak przewodnik układu pionowego od dołu do dołu, co musiało mieć sens dla kogoś w Apple około 2004 roku.


0

Żadna z powyższych odpowiedzi nie zadziałała dla mnie, zamiast tego muszę zrobić hack, aby ustawić górę widoku podrzędnego z górą superview zamiast z przewodnikiem po układzie górnym.

  • Najpierw ustaw środek widoku podrzędnego pionowo z nadzorem.
  • Następnie zmień ograniczenia Centrum Y dla podglądu podrzędnego i nadzoru na ograniczenie Górne .

Teraz możesz już iść.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.