Zanim trafisz na numer viewDidLoad
, mechanizm ograniczeń nie został jeszcze zastosowany, a lokalizacja początkowa widoków nie została jeszcze ustalona. Możesz więc dodać oryginalne ograniczenia w viewDidLoad
, ale będziesz chciał odroczyć animateWithDuration
do późniejszego etapu procesu (np. viewDidAppear
).
Na przykład, załóżmy, że masz jakieś ograniczenia, które dodaje się w konstruktora Interface (IB). Możesz dodać @IBOutlet
odniesienie do niej przez sterowania -dragging od przymusu w zarysie dokumentu w lewym panelu interfejsu Builder dół do asystent montażysty:
Teraz masz odniesienie do że ograniczenie, można teraz programowo zmienić wartość constant
dla tego ograniczenia (ale znowu to zrobić w viewDidAppear
, nie viewDidLoad
, jeśli chcesz zobaczyć ten animowany gdy widok jest prezentowany):
@IBOutlet weak var topConstraint: NSLayoutConstraint!
override func viewDidAppear(animated: Bool) {
super.viewDidAppear(animated)
topConstraint.constant = 100
UIView.animateWithDuration(2.0) {
self.view.layoutIfNeeded()
}
}
Proces jest taki sam dla tworzonych programowo wiązań. Wystarczy zapisać odniesienie do ograniczenia, a następnie viewDidAppear
zaktualizować constant
, a następnie animować połączenie do layoutIfNeeded()
.
Korzystanie przykładowy kod w swoim pytaniu jak jest! – SwiftArchitect