2012-05-06 13 views

Odpowiedz

115

Po ustawieniu maski automatycznej zmiany dla widzenia stosowanie bitowego włącznie lub (|) (cel-C) lub szereg (Swift i 2, 3) w celu określenia sprężyny i rozpory.

  • Sprężyny reprezentuje określającym maskę (cel-C lub Swift 3, odpowiednio):

    • pionowe sprężyny: UIViewAutoresizingFlexibleHeight lub .flexibleHeight

    • poziomy sprężyna: UIViewAutoresizingFlexibleWidth lub .flexibleWidth

  • Struts są reprezentowane przez brak jednej z czterech "elastycznych marginesów" masek (tj.jeżeli amortyzatora nie istnieje, maska ​​dla tego marginesu jest określona):

    • UIViewAutoresizingFlexibleLeftMargin lub .flexibleLeftMargin

    • UIViewAutoresizingFlexibleRightMargin lub .flexibleRightMargin

    • UIViewAutoresizingFlexibleTopMargin lub .flexibleTopMargin

    • UIViewAutoresizingFlexibleBottomMargin lub .flexibleBottomMargin

Na przykład, w widoku z A poziomych sprężyn i górne i dolne rozporki miałaby szerokość oraz lewy i prawy określona jako elastyczny,

Swift 3

mySubview.autoresizingMask = [.flexibleWidth, .flexibleLeftMargin, .flexibleRightMargin] 

Swift 2

mySubview.autoresizingMask = [.FlexibleWidth, .FlexibleLeftMargin, .FlexibleRightMargin] 

Swift 1,2

mySubview.autoresizingMask = .FlexibleWidth | .FlexibleLeftMargin | .FlexibleRightMargin 

Objective-C

mySubview.autoresizingMask = (UIViewAutoresizingFlexibleWidth |  
           UIViewAutoresizingFlexibleLeftMargin | 
           UIViewAutoresizingFlexibleRightMargin); 

enter image description here

+3

@Flink - Twoja edycja jest źle. Przywróciłem swoją odpowiedź do pierwotnego stanu. Przeczytaj go uważnie, a zwłaszcza: "Straty są reprezentowane przez brak jednej z czterech" elastycznych marginesów "(tzn. Jeśli grupa NIE istnieje, maska ​​tego marginesu jest określona):" – MattyG

+0

Niestety, mój błąd. .. – Shmidt

+0

bardzo pomocne, dzięki – kukudas

8

UIViewAutoResizingMasks to, co nazywamy "rozpórkami" i "sprężynami". Rozważ to: masz duży kwadrat z małym kwadratem w środku. Aby kwadrat pozostał doskonale wyśrodkowany, musisz ustawić stałą szerokość z każdej wewnętrznej krawędzi dużego kwadratu, aby go ograniczyć. To są rozpórki.

Sprężyny natomiast działają podobnie do UIView podczas obrotu. Powiedzmy, że nasz widok musi pozostać na dole ekranu, wyrównany w środku (podobnie jak pasek UIToolbar). Chcemy, aby jego sprężyna górna była elastyczna, aby po obróceniu widoku z 460 pikseli do 320 pikseli zachowała tę samą pozycję względem aktualnie zmienionych wymiarów ekranu. Podświetlenie jednej z tych sprężyn w IB jest równoznaczne z ustawieniem odpowiedniej maski UIViewAutoResizingMask, a podświetlenie górnej sprężyny jest szczególnie podobne do wywoływania myView.autoResizingMask = UIViewAutoresizingFlexibleTopMargin.

Wartości mogą być stosowane w tandemie załączając je w parę nawiasów i za pomocą operatora OR jak myView.autoResizingMask = (UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleLeftMargin)

maski są numery raportowania do was, ponieważ są one typdef o NSUInteger i to są flagi, które jabłko je przypisał. Cmd + kliknij jeden, aby zobaczyć jego definicję metody.