2010-02-13 5 views
2

У меня возникла проблема с правильной настройкой моего представления при создании через -loadView. Кажется, что мой ракурс всегда (0, 0, 320, 460), даже когда view/controller вложен внутри UINavigationController и/или UITabBarController. Есть ли способ обнаружить программно, когда мой контроллер представления вложен в эти элементы, чтобы я мог установить правильный фрейм? Мой loadView просто устанавливает вложенный UIScrollView, который должен точно соответствовать видимому размеру экрана (460 пикселей слишком высоки, когда есть панель вкладок и видимая панель навигации).Правильный размерный вид в -loadView

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

ответ

2

Есть несколько свойств в UIViewController, которые могут быть интересны здесь:

  • navigationController
  • tabBarController

Если это не nil вы должны быть в состоянии сказать, если вам нужно изменить размер вашего представления или нет.

+0

Это определенно приемлемый вариант. Я бы не решался использовать это, потому что это означало бы размеры кадров жесткого кодирования в моем контроллере просмотра на основе наличия tabBarController и navigationController - что происходит, когда я хочу портировать это на iPad или другое устройство с другим размером экрана? – pix0r

+0

Я думаю, что вы слишком беспокоитесь о «других» устройствах. Пока есть только одно другое устройство, и это iPad, у которого будет гораздо больший экран, поэтому вам, вероятно, придется перепроектировать представления. :) – willcodejavaforfood

+3

Каждый из этих контроллеров имеет свойства для доступа к tabBar и/или navigationBar, из которых вы можете получить размеры, чтобы вывести нужный размер для вашего экрана ... –

0

Не размещайте свои представления в loadView: или viewDidload: без наконечника. Сделайте это в viewWillAppear:, в то время кадр основного представления правильно.

+0

Это не совсем достоверно, поскольку анимация, возможно, не была выполнена. (Пример: Анимируйте панель состояния, затем сделайте модульную презентацию вашего контроллера вида.) – tomwhipple

Смежные вопросы