W ogóle nie rozumiem, dlaczego ludzie narzekają, że „ Marginesy spowodowałyby absolutną awarię na czymkolwiek wcześniejszym niż iOS 8. ”
Ustawienie ograniczeń względem marginesu w pliku xib lub serii ujęć NIE powoduje awarii aplikacji na iOS7 i NIE robi żadnej różnicy w interfejsie użytkownika na urządzeniu z iOS7, o ile nie dotkniesz UIView.layoutMargins
i UIView.preservesSuperviewLayoutMargins
właściwości w kodzie.
Co to są marginesy w iOS8
Marginesy Układ stanowią dopełnienie całego wnętrza Urządzony UIView
że system układ może wykorzystać podczas układania subviews - aby upewnić się, że luka jest pozostawione między krawędzią myślą i podrzędny. Pod tym względem jest to bardzo podobne do właściwości padding związanej z blokami w CSS.
Domyślnie a UIView
ma marginesy układu 8 punktów z każdej strony i nie można tego zmienić w Konstruktorze interfejsów . Jednak ustawiając UIView.layoutMargins
właściwość w kodzie, który jest dostępny tylko na iOS8, możesz dostosować te wartości.
Możesz sprawić, aby IB wyświetlał marginesy za pomocą Edytora> Kanwy> Pokaż prostokąty układu:
Marginesów można użyć do ułożenia widoków i widoków podrzędnych. Każda UIView
z nich ma domyślnie marginesy, ale wpływają one tylko na umiejscowienie widoku, gdy skonfigurujesz ograniczenie związane z marginesem.
Jak korzystać z marginesów
Jedynym sposobem użycia marginesów w Konstruktorze interfejsów jest sprawdzenie opcji Względne do marginesu podczas konfigurowania ograniczeń. W ten sposób kierujesz swoje ograniczenie do korzystania z marginesów zamiast krawędzi podczas układania mojego widoku.
Rzućmy okiem na cztery różne sposoby ustawiania wiodącego ograniczenia między widokiem i jego widokiem podrzędnym. Dla każdego z ograniczeń, które przeglądamy, pierwsze opisane powiązanie będzie prowadzące do podview , a drugie będzie prowadzące do superview . To, na co chcesz zwrócić szczególną uwagę, to sprawdzanie i odznaczanie opcji Względne do marginesu każdego końca wiązania, ponieważ określa, czy wiązanie jest powiązane z marginesem czy krawędzią widoku.
- Pierwszy element (odznacz), drugi element (zaznacz): W tym przypadku deklarujemy, że lewa krawędź podglądu powinna być wyrównana do lewego marginesu podglądu (jak pokazano na tym obrazku).
- Pierwszy element (odznacz), drugi element (odznacz): Oba używają krawędzi, a nie marginesu . W tym przypadku deklarujemy, że lewa krawędź podglądu powinna być wyrównana do lewej krawędzi podglądu.
- Pierwszy element (zaznacz), drugi element (odznacz): W tym przypadku deklarujemy, że lewy margines podglądu powinien być wyrównany do lewej krawędzi superview. Ten rodzaj układu powoduje, że widok podrzędny nakłada się na podgląd.
- Pierwsza pozycja (czek), druga pozycja (czek). Ma to w rzeczywistości taki sam efekt jak przypadek 2, ponieważ zarówno widok podglądu, jak i podgląd mają ten sam domyślny margines. Oświadczamy, że lewy margines podglądu powinien być wyrównany do lewego marginesu podglądu.
Co jest dobrego w Margins
Ta nowa funkcja (iOS8) wpływa tylko na rozwój interfejsu użytkownika, jeśli zdecydujesz się na użycie marginesów.
Korzystając z marginesów, można dopasować położenie wielu widoków podrzędnych, które mają wspólną relację do wspólnego podglądu, zmieniając wartość pojedynczej właściwości. Jest to wyraźna przewaga nad ustawieniem wszystkich powiązanych ograniczeń stałymi wartościami, ponieważ jeśli musisz zaktualizować wszystkie odstępy, zamiast zmieniać każdą wartość jedna po drugiej, możesz jednocześnie zmodyfikować wszystkie odpowiednie umiejscowienie, aktualizując margines superwizji za pomocą jednej linii kod taki jak ten:
self.rootView.layoutMargins = UIEdgeInsetsMake(0, 50, 0, 0);
Aby zilustrować tę korzyść, w poniższym przypadku lewe krawędzie wszystkich widoków podrzędnych są wyrównane do lewego marginesu ich podglądu. Tak więc zmiana lewego marginesu superwizji wpłynie na wszystkie podviewy w tym samym czasie.