UINavigationController внутри ViewController, пробел в верхней части представления - PullRequest
19 голосов
/ 03 марта 2011

Я работаю над универсальным приложением и пытаюсь разделить как можно больше кода между версиями для iPhone и iPad. Мне нужно использовать TabBarController в качестве моего корневого контроллера представления, и хотя я хотел бы использовать SplitViewController в каждой из вкладок, документы SplitViewController говорят, что он должен быть корневым контроллером представления. Итак, учитывая все это - поймите, что я пытаюсь разместить два контроллера навигации рядом и (в основном) копировать поведение / компоновку SplitViewController.

Все работает просто отлично, за исключением расположения видов. Когда приложение запускается в портретном режиме, все функционирует и корректно изменяет размер / положение при изменении ориентации устройства.

portrait orientation

Если приложение запускается в любой ориентации, кроме UIDeviceOrientationPortrait, представление отображается с зазором / полем в 20 точек над контроллером навигации. Я пытался настроить кадр во время выполнения без идеального результата. Настройка origin.y кадра на -20 и увеличение высоты на 20 приводит к тому, что вид находится на одном уровне с верхом его родителя, но оставляет 20-точечный зазор внизу!

landscape orientation

Ответы [ 11 ]

0 голосов
/ 23 августа 2011

Правильный ответ:

CGRect r = [[_navController view] frame];
r.origin = CGPointMake(0.0f, -20.0f);
[[_navController view] setFrame:r];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...