Pracuję z autolayout i ograniczeniami i odkryłem, że Constrain to margins
w Xcode 6 jest opcja, która nie była obecna w Xcode 5 i jest domyślnie zaznaczona.
Utworzyłem projekt testowy, a następnie dodałem UITableView
na ViewController z ramką ustawioną na taki sam rozmiar jak widok i dodałem ograniczenia
Xcode 6 Możesz zobaczyć tutaj, mimo że widok tabeli ma tę samą ramkę, co widok Xcode sugeruje dodanie -16 jako ograniczenie, podczas gdy Xcode 5 sugeruje dodanie odstępu 0.
Teraz, gdy odznaczysz opcję „Ogranicz do marginesu”, zachowuje się tak samo jak Xcode 5 i sugeruje dodanie 0 jako ograniczenia
Odkryłem również, że po dodaniu ograniczenia z zaznaczonym ograniczeniem do marginesu nie jestem już w stanie otworzyć pliku scenorysu w Xcode 5, więc jest to zdecydowanie coś nowego w Xcode 6
Mam nadzieję, że jestem w stanie właściwie wyjaśnić moje pytanie. Chciałbym zrozumieć, co faktycznie robi „Ogranicz do marginesu” oraz kiedy powinienem i nie powinienem go używać. Przepraszam, jeśli jest to coś bardzo prostego i oczywistego.
EDYTOWAĆ
W dyskusji znalazłem coś na temat marginesów układu , zastanawiam się, czy to się z tym wiąże.
źródło
Odpowiedzi:
W ogóle nie rozumiem, dlaczego ludzie narzekają, że „ Marginesy spowodowałyby absolutną awarię na czymkolwiek wcześniejszym niż iOS 8. ”
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ącUIView.layoutMargins
właściwość w kodzie, który jest dostępny tylko na iOS8, możesz dostosować te wartości.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.
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:
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.
źródło
W iOS 8 masz teraz możliwość zdefiniowania ograniczeń w stosunku do z góry określonego marginesu granic superview, zamiast samych granic superview. Tak, jest to całkowicie związane z marginesami układu wskazanymi w dokumentach. Jedną z zalet jest to, że możesz dynamicznie lub inaczej definiować swoje marginesy dla każdego rodzaju urządzenia, a układ zostanie odpowiednio zaktualizowany bez modyfikowania ograniczeń.
Kiedy używać: kiedy chcesz skorzystać z tej nowej elastyczności.
Kiedy NIE używać: w przypadku dowolnej aplikacji, która ma działać na iOS 7 lub starszej wersji.
źródło
Nieruchomość na UIView jest:
layoutMargins
. Zobacz dokumenty Apple . Zasadniczo, jeśli marginesy układu wynoszą 8,8,8,8 (domyślnie), ograniczenie z 0 wiodącą przestrzenią do marginesu kontenera będzie miało pozycję x 8. Uwaga: jest to dostępne tylko na iOS8 lub nowszym.Dla wszystkich, którzy nie chcą, aby ich ograniczenia sięgały do marginesu kontenera:
CTRL + kliknięcie + przeciągnięcie, aby wyświetlić wyskakujące okienko tworzenia ograniczenia.
Jeśli menu pokazuje, aby domyślnie utworzyć ograniczenie do marginesu, przytrzymaj opcję / alt, aby umożliwić ograniczenie do kontenera, a nie do marginesu kontenera.
Teraz pokaże opcję utworzenia ograniczenia NIE do marginesu. W moim użyciu jest to DROGA szybsze.
źródło