Sobes.tech
Junior — Middle

Vai AutoLayout var mainīt lietojumprogrammā no cita izpildes pavediena?

sobes.tech AI

Atbilde no AI

Nav iespējams mainīt AutoLayout (piemēram, atjaunināt ierobežojumus) no cita izpildes pavediena. Visas UI izmaiņas, ieskaitot darbu ar AutoLayout, jāveic galvenajā pavedienā (main thread).

Ja mēģināsiet mainīt ierobežojumus no fonā esoša pavediena, tas var novest pie neparedzamas uzvedības, avārijām vai vizuāliem artefaktiem.

Pareizais veids ir pārslēgties uz galveno pavedienu pirms AutoLayout maiņas:

DispatchQueue.main.async {
    // ierobežojumu atjaunināšana
    viewConstraint.constant = 20
    view.layoutIfNeeded()
}

Tādējādi tiek nodrošināta drošība un pareiza saskarnes atjaunināšana.