Sobes.tech
Junior — Middle

Meg lehet változtatni az AutoLayoutot egy alkalmazásban egy másik végrehajtási szálból?

sobes.tech MI

Válasz az MI-től

Az AutoLayout (például a constraint-ek frissítése) nem módosítható másik végrehajtási szálból. Minden UI-változtatást, beleértve az AutoLayout-tal való munkát, a fő szálon (main thread) kell végrehajtani.

Ha megpróbálja módosítani a constraint-eket háttér szálról, az kiszámíthatatlan viselkedést, összeomlást vagy vizuális artefaktokat okozhat.

A helyes megközelítés az, hogy az AutoLayout módosítása előtt átváltson a fő szálra:

DispatchQueue.main.async {
    // constraint-ek frissítése
    viewConstraint.constant = 20
    view.layoutIfNeeded()
}

Így biztosítható az interfész frissítésének biztonsága és helyessége.