Sobes.tech
Junior — Middle

შესაძლებელია თუ არა AutoLayout-ის შეცვლა აპლიკაციაში სხვა შესრულების ნაკადიდან?

sobes.tech AI

პასუხი AI-სგან

AutoLayout-ты (мисалы, чектөөлөрдү жаңылоо) башка аткаруу агымынан өзгөртүүгө болбойт. Бардык UI өзгөртүүлөрү, анын ичинде AutoLayout менен иштөө, негизги агымда (main thread) жүргүзүлүшү керек.

Эгер чектөөлөрдү фондук агымдан өзгөртүүгө аракет кылсаңыз, бул алдын ала көрүлбөгөн жүрүм-турумга, ката кетүүлөргө же визуалдык arteфакттарга алып келиши мүмкүн.

Туура ыкма — AutoLayoutту өзгөртүүдөн мурун негизги агымга өтүү:

DispatchQueue.main.async {
    // чектөөлөрдү жаңылоо
    viewConstraint.constant = 20
    view.layoutIfNeeded()
}

Мындай жол менен интерфейс жаңылоонун коопсуздугу жана тактыгы камсыздалат.