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.