Как получить реальный размер кадра подробного представления при использовании UISplitViewController

Я немного озадачен этим.

Я пытаюсь программно изменить размер некоторых элементов пользовательского интерфейса...

Размер элементов зависит от размера родительского представления (здесь подробное представление). (Я не хочу использовать маску авторазмера просто потому, что не могу получить с ней желаемый результат)

При работе в ландшафтном режиме, читая размер кадра моего текущего представления в UIViewDidAppear, размер, который я получаю, всегда составляет 1024 пикселя в ширину, что, очевидно, не будет иметь место после того, как все будет отображено (это будет 1024 минус ширина корневого контроллера (320 пикселей) = 704 пикселя в ширину)

В какое время и где я должен ожидать изменения размера представления, чтобы я мог точно прочитать размер кадра.

Очевидно, я хочу сделать это как можно раньше в жизненном цикле представления и, если возможно, до того, как что-либо будет нарисовано, чтобы пользователь не увидел, что я изменяю размер объектов.

В идеале мне интересно, есть ли вызываемая конкретная функция (похожая на UIViewWillAppear), в которую я мог бы поместить свой код.

Спасибо


person jyavenard    schedule 02.09.2011    source источник
comment
Я понимаю, почему мне не звонят, когда ожидают. Я использую UISplitViewController в сочетании с UITabBarController.   -  person jyavenard    schedule 02.09.2011


Ответы (2)


Вы ищете - (void)layoutSubViews см. этот вопрос: Когда вызывается layoutSubviews?

person Rog    schedule 02.09.2011

Обычно с момента вызова UIViewDidAppear все изменяется до нормального размера. Однако при использовании UISplitViewController, запущенного из UITabBarController, сообщение UIViewDidAppear не вызывается, как можно было бы ожидать.

Эта ситуация не поддерживается в iOS 4 и более ранних версиях. Рекомендации Apple по пользовательскому интерфейсу требуют, чтобы у вас был только один контроллер UIView на экран (за исключением UISplitViewController и UITabBarController). Похоже с iOS 5 эта ситуация будет поддерживаться.

person jyavenard    schedule 16.09.2011