Middle+
Koje promene je potrebno napraviti u constraints pre poziva layout?
sobes.tech АИ
Одговор од АИ
Измене у constraints треба да се ураде пре него што се позове layoutIfNeeded() или пре него што заврши циклус ажурирања у којем систем аутоматски позива layout. Најчешћи начин је унутар методе updateConstraints() прилагођеног UIView или UIViewController.updateViewConstraints().
Пример измене constraints у updateConstraints():
override func updateConstraints() {
// Проверите да ли constraint још није креиран или ако треба променити његову вредност
if myConstraint == nil {
myConstraint = viewA.bottomAnchor.constraint(equalTo: viewB.topAnchor, constant: -8)
myConstraint?.isActive = true // Активирај constraint
}
// Промените вредност constraint ако је потребно
myConstraint?.constant = someNewValue
// Увек позовите super
super.updateConstraints()
}
Промене се такође могу извршити непосредно пре позива layoutIfNeeded(), на пример, као одговор на акцију корисника или промену стања:
// Промените вредност постојећег constraint-а
someConstraint.constant = newValue
// Позовите layoutIfNeeded() да бисте одмах применили промене
view.layoutIfNeeded()
Важно је да се промене constraints заврше пре него што Auto Layout почне да рачуна нове оквире.