Junior — Middle
Може ли да се мења AutoLayout у апликацији из другог тока извршавања?
sobes.tech АИ
Одговор од АИ
Није могуће мењати AutoLayout (на пример, ажурирати ограничења) из другог тока извршавања. Све промене у корисничком интерфејсу, укључујући рад са AutoLayout-ом, треба да се извршавају у главном току (main thread).
Ако покушате да промените ограничења из позадинског тока, то може довести до непредвидивог понашања, падова или визуелних артефаката.
Правилан приступ је прелазак на главни ток пре промене AutoLayout-а:
DispatchQueue.main.async {
// ажурирање ограничења
viewConstraint.constant = 20
view.layoutIfNeeded()
}
Овим се гарантује безбедност и исправност ажурирања интерфејса.