Проблемы с макетом в 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...
}
Надеюсь, это будет полезно для кого-то:)
С наилучшими пожеланиями,
Ренато.