2014-09-22 14 views
27

Dodałem uiview na kontroler widoku (VC), próbując ustawić jego szerokość jest równa szerokości widoku VC.Nieoczekiwany wynik dla autolayout na iphone 6 plus

Co mogę ustawić i oczekuje: xcode setting and expected result

I co mam na iPhone'a 6 Plus: what i got on ip6+

Próbowałem zmienić stałych wiodących przestrzeń i tylną przestrzeń i żadnej pomocy. Czy są jakieś specjalne dla autolayout na iPhone 6+?

Widok ustawienie tutaj jest „Każda szerokość x wysokość regularna”

------- Dodano grudnia 2016 Dla ludzi, którzy są mylone przez tym przypadku jak ja: Istnieje właściwość w UIView layout margin , który jest UIEdgeInsets (8, 8, 8, 8). Jest to coś w rodzaju dopełnienia css.

Gdy krawędź widoku znajduje się blisko krawędzi SuperView a właściwość preservesSuperviewLayoutMargins jest prawdziwe, rzeczywiste marże układ może zostać zwiększona, aby zapobiec zawartość z nakładania się marginesy Superview użytkownika.

Domyślne marginesy to osiem punktów z każdej strony.

Jeśli widok jest widokiem głównym kontrolera widoku, zestaw systemowy i zarządza marginesami. Górny i dolny margines są ustawione na zero punktów. Marginesy boczne różnią się w zależności od bieżącej klasy wielkości, ale może mieć 16 lub 20 punktów. Nie możesz zmienić tych marginesów.

Odpowiedz

53

Spróbuj usunąć zaznaczenie Ogranicz do marginesów podczas dodawania wiązań. Tutaj spojrzeć:

Ogranicz do marginesów jest zaznaczony i jej wynik

Constrain to marginsresult

Teraz, po usunięciu ograniczeń i ponowne dodanie ograniczeń z ograniczyć do marginesie zaznaczone, oto wynik:

Constrain to margins uncheckedresult without Constrain to margins

+2

Dzięki za oszczędność czasu. – Horst

+0

Też cierpię z tego powodu. Wygląda jak bug xcode? – syshen

+0

Nie powiedziałbym, że to błąd, najprawdopodobniej iphone 6 plus ma wyższe marże niż inne telefony iPhone. –

19

odpowiedź Szarona działa wspaniale, ale nie trzeba, aby usunąć istniejącą constra int, aby rozwiązać problem. Możesz edytować istniejące ograniczenia usuwanie marginesu obcych:

Before applying solution Solution step After applying solution

+0

Mam ten sam problem. Jak dodać poziomą ograniczoną przestrzeń? – 4thSpace

+0

Czy znasz tworzenie więzów autolayout? To tylko kwestia stworzenia regularnego ograniczenia i odznaczenia opcji "Względna na margines". – pimguilherme

+0

@ 4thSpace: po usunięciu zaznaczenia marginesu automatycznie zmieni się z ograniczenia wiodącego na poziomą wiązkę. –

0

edycji istniejących ograniczeń usunąć margines obcy nie będzie działać. Musisz usunąć istniejące ograniczenia i dodać nowe, pozostawiając ograniczenia do niezaznaczonego marginesu.

0

Napotkałem ten sam problem dla przycisku "Gotowe". Problem polegał na tym, że mój widok (Done Button) był w hierarchii widoku podstawowego, więc przywracam widok z powrotem w widoku głównym (widok kontrolera widoku). i odpowiednio ustawić wiązania.

Mój przypadek ustawić ograniczenia Spinka> Odznacz Ograniczenia do Margin -> Bottom, początku, na końcu (wartość Ograniczenia = 0)

enter image description here

Upewnij widok hierarchia nie powinien być następujący sposób (podrzędny może. ale widok cięty nie może).

enter image description here

0

miałem ten błąd w iPhone 6 Plus symulatora. Ale w urządzeniu 6 plus ten błąd się nie zdarzył. Może to być tylko błąd z 6 plus symulatorów.

Powiązane problemy