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.