2009-12-26 3 views
0

У меня есть настройка табуляции с несколькими вкладками. Первым tabitem является viewcontroller, который программно загружает xib, который выложен на портрете. Когда пользователь поворачивает телефон, он автоматически представляет модальное представление, которое выложено в ландшафте. Этот механизм работает отлично.iPhone: Некоторые виды Другие пейзажи Портрет

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

Я реализовал класс под названием RotateTabBarViewController, который содержит метод shouldAutorotateToInterfaceOrientation и проверяет значение того же метода на выбранном элементе управленияViewController. Поэтому, если у меня есть метод toAutorotateToInterfaceOrientation в моем веб-представлении, возвращающем true, тогда представление будет вращаться, как ожидалось.

В этом проблема. Хотя повернутое изображение находится в ландшафтном режиме, панель все еще видна, что означает, что пользователь может щелкнуть значок для первого элемента. Когда первый элемент щелкнут, он знает, что он находится в ландшафтном режиме и автоматически загружает модальный вид снова. Единственная проблема заключается в том, что вид смещен на экране.

Я ищу решение, которое перестроит модальное представление о том, где оно должно быть. Я не уверен, что это основное представление, которое нужно перестроить или просто модальное представление.

Следующая ссылка содержит демо-версию концепции.

http://www.veryniceindustries.com/rotation_demo.zip

  • Поверните устройство к портрету
  • Select Item Два
  • Поверните устройство на альбомный (нужна помощь перепрофилирования этой точки зрения)
  • Выберите пункт появляется один (модальные для ландшафта, но смещается)

Любая помощь была бы принята с благодарностью.

Бест, Howie

+0

Я просматривал ваш код, планируя iSlate тоже, я вижу :) – Jonathan

+0

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

ответ

0

Вы рассматривали реализацию метода viewWillAppear на ViewController # 1, и исправляя рамку зрения?

В качестве альтернативы можно использовать его в элементе itemOneViewController в методах orientChanged или updateItemOneView?

PS: спасибо за предоставление исходного кода, поскольку молодой программист Obj-C всегда приятно видеть, как кто-то другой подходит к проблеме.

+0

Спасибо за ответ - но я такой noob, я не знаю, как изменить фрейм. Это вопрос просто перехода нового кадра в «я» в методе viewWillAppear или это что-то более активное? Может быть, есть фрагмент, который я могу проверить? Thanks, Howie – Ward

+0

Ну UIViewController - это не UIView, поэтому вы действительно хотите что-то вроде [self.view setFrame: UITabBarController.view.frame]. UITabBarController должен быть экземпляром UITabBarController, который вы используете. Вы можете сделать ссылку в IB и назначить ее для ivar, чтобы вы могли легко ссылаться на нее. Кадры являются C-структурами, называемыми CGRect, вы можете создавать их с помощью CGRectMake() – Jonathan

+0

выглядит как начало как представления itemOneViewController, так и viewOneLandscapeViewController - это как 0,0. Возможно ли, что что-то еще движется, когда я перехожу от одного элемента табеля к другому? – Ward

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