Sobes.tech
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 почне да рачуна нове оквире.