2015-02-17 3 views
5

Я использую автозапуск для частей своего пользовательского интерфейса. Когда я проверяю ширину моего представления в viewWillAppear, ширина еще не обновлена. Он обновляется после второго обратного вызова - (void) updateViewConstraints. Проблема в том, что я настроил свои части своего пользовательского интерфейса (используя пружину и распорки для устаревших причин) на основе этой ширины в viewWillAppear. Когда самое подходящее время для установки этого устаревшего пользовательского интерфейса, который принимает параметр ширины?Auto Layout = ViewWillAppear имеет неправильную ширину вида

благодаря

+0

Просто 'view.layoutIfNeeded()' в верхней части вашего 'viewWillAppear' – onmyway133

ответ

12

Layout происходит после того, как viewWillAppear возвращается. Сделайте это в viewDidLayoutSubviews (на вашем контроллере) или в layoutSubviews (в вашем пользовательском подклассе). В любом случае, сначала позвоните по телефону super.

Другим способом является создание макета путем отправки [view layoutIfNeeded]. Затем вы можете добавить subviews и установить их пружины и распорки. Система снова выполнит макет (в обычное время), потому что вы добавили subviews.

+0

звучит хорошо! благодаря – FatalError