Проблемы с макетом в iOS10

Я постараюсь сохранить это коротким. Я использовал viewDidLayoutSubviews для (в основном) применения углового радиуса к некоторым представлениям в нескольких UIViewController s. Также делает то же самое в layoutSubviews для пользовательских UIView s.

После установки Xcode 8 Beta это перестало вести себя предсказуемо. Иногда это работает, другие работают с задержкой, другие все еще, совсем нет...

Одна вещь, которая была немедленной при отладке, состояла в том, что при первом вызове viewDidLayoutSubviews границы равны нулю для рассматриваемых представлений. При втором вызове границы верны; Дело в том, что, как я уже сказал, второй вызов либо имеет (видимую) задержку, либо никогда не происходит вообще.

Есть указатели? Спасибо всем заранее.

Бест, Ренато.

1 ответ

Решение

Отвечая на мой собственный вопрос, на случай, если кто-то столкнется с той же проблемой...

Насколько я могу судить, в iOS 10 нельзя предполагать, что вызовы, выполняемые для layoutSubviews, viewDidLayoutSubviews и т. Д., Будут вызываться в основном потоке.

Таким образом, ответ, кажется, просто заключает вызовы пользовательского интерфейса в блок отправки (новый синтаксис iOS 10):

DispatchQueue.main.async {
        // Do UI stuff here...
        }

Надеюсь, это будет полезно для кого-то:)

С наилучшими пожеланиями,

Ренато.

Другие вопросы по тегам