Skonfigurowałem moje ograniczenia w viewDidLoad
/ loadView
(celuję w iOS> = 6). updateViewConstraints
przydaje się do zmiany wartości ograniczeń, np. jeśli jakieś ograniczenie jest zależne od orientacji ekranu (wiem, to zła praktyka) to można to zmienić constant
w tej metodzie.
Dodawanie ograniczeń w programie viewDidLoad
jest pokazane podczas sesji „Wprowadzenie do automatycznego układu dla iOS i OS X” (WWDC 2012), począwszy od 39:22. Myślę, że to jedna z tych rzeczy, o których mówi się na wykładach, ale nie ląduje w dokumentacji.
AKTUALIZACJA: Zauważyłem wzmiankę o ustawianiu ograniczeń w zarządzaniu zasobami w kontrolerach widoku :
Jeśli wolisz programowo tworzyć widoki, zamiast używać scenorysu, możesz to zrobić, zastępując loadView
metodę kontrolera widoku . Twoja implementacja tej metody powinna wykonać następujące czynności:
(...)
3. Jeśli korzystasz z automatycznego układu, przypisz wystarczające ograniczenia do każdego z właśnie utworzonych widoków, aby kontrolować pozycję i rozmiar widoków . W przeciwnym razie zaimplementuj metody viewWillLayoutSubviews
i
viewDidLayoutSubviews
, aby dostosować klatki podglądów podrzędnych w hierarchii widoków. Zobacz „Zmiana rozmiaru widoków kontrolera widoku”.
UPDATE 2 : Podczas WWDC 2015 Jabłko dał nową wyjaśnienie z updateConstraints
i updateViewConstraints
Zalecane użycie:
W rzeczywistości wszystko to jest sposobem na to, aby widoki miały szansę na wprowadzenie zmian w ograniczeniach w samą porę do następnego przejścia układu, ale często nie jest to w rzeczywistości potrzebne.
Cała początkowa konfiguracja ograniczeń powinna mieć miejsce w programie Interface Builder.
Lub jeśli naprawdę okaże się, że musisz programowo alokować swoje ograniczenia, miejsce takie jak viewDidLoad jest znacznie lepsze.
Aktualizuj ograniczenia są tak naprawdę tylko do pracy, która musi być okresowo powtarzana.
Poza tym, zmiana ograniczeń po prostu jest prosta, gdy znajdziesz taką potrzebę; mając na uwadze, że jeśli weźmiesz tę logikę z innym kodem, który jest z nią powiązany i przeniesiesz ją do osobnej metody, która zostanie wykonana w późniejszym czasie, kod stanie się znacznie trudniejszy do naśladowania, więc trudniej będzie ci go utrzymać , innym ludziom będzie dużo trudniej zrozumieć.
Kiedy więc będziesz musiał użyć ograniczeń aktualizacji?
Cóż, wszystko sprowadza się do wydajności.
Jeśli okaże się, że sama zmiana ograniczeń jest zbyt wolna, wówczas ograniczenia aktualizacji mogą być pomocne.
Okazuje się, że zmiana ograniczenia wewnątrz ograniczeń aktualizacji jest w rzeczywistości szybsza niż zmiana ograniczenia w innym czasie.
Dzieje się tak dlatego, że silnik jest w stanie traktować wszystkie zmiany ograniczeń, które mają miejsce w tym przebiegu, jako partię.