проблема позиционирования с контроллером uisplitview в левом обзоре - PullRequest
2 голосов
/ 14 декабря 2010

У меня возникла небольшая проблема, когда я запускаю свой splitview в альбомной ориентации, над моим левым контроллером просмотра появляется небольшое черное пространство: alt text

после поворота моего ipad в портретную ориентацию и переключения в альбомную ориентацию,пространство пропало.

Если я загружаю контроллер uitableview непосредственно в левое представление, а не в навигационный контроллер, он работает нормально: alt text

есть идеи, почему это происходит ??

// Produkte
    self.produkteMainTableVC = [[produkteMainTableViewController alloc] initWithStyle:UITableViewStylePlain];
    UINavigationController *produkteMainNavigationController = [[UINavigationController alloc] initWithRootViewController:self.produkteMainTableVC];
    self.produkteDetailVC = [[produkteDetailViewController alloc] initWithNibName:@"produkteDetailViewController" bundle:nil];
    self.produkteSplitVC = [[UISplitViewController alloc] init];

    self.produkteSplitVC.delegate = self.produkteDetailVC;
    self.produkteMainTableVC.produkteDetailVC = produkteDetailVC;
    [self.produkteSplitVC setViewControllers:[NSArray arrayWithObjects:produkteMainNavigationController,self.produkteDetailVC,nil]];

спасибо за помощь!

edit: ровно в 20 пикселей, как в строке состояния.это кому-нибудь помогает?

edit2:

делает что-то вроде этого:

if(self.navigationController.navigationBar.frame.origin.y >= 20.0) {

        self.navigationController.navigationBar.frame = CGRectMake(self.navigationController.navigationBar.frame.origin.x, 0.0, self.navigationController.navigationBar.frame.size.width, self.navigationController.navigationBar.frame.size.height);
    }

приводит к тому, что: alt text

небольшое улучшение я бысказать.но я понятия не имею, как вставить мой табличный вид под панель навигации.

Ответы [ 5 ]

3 голосов
/ 20 декабря 2012

Я знаю, что это очень старая тема, но, возможно, она поможет другим людям ...

У меня была та же проблема (с той же конфигурацией: splitview на вкладке). Это свойство решило это!

[self.splitViewController setWantsFullScreenLayout:YES];
0 голосов
/ 27 января 2014

кажется, что эта проблема возникает из iOS 7.0. Установка фрейма UINavigationBar в некоторых случаях не работает. Я думаю, что это может решить вашу проблему:

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7.0) {
        self.navigationController.view.frame = CGRectMake(0, -20, self.navigationController.view.frame.size.width,
                                                          self.navigationController.view.frame.size.height);
    }

Этот код следует вызывать только один раз (например, в - (void)viewDidLoad). В моем случае это работает для всех устройств ориентации.

0 голосов
/ 03 февраля 2011

Я столкнулся с той же проблемой, но без разрешения. Единственное, что я заметил, это то, что это НЕ происходит, когда мастер не включает UINavigationController в качестве корня.

Кто-нибудь может решить эту проблему?

0 голосов
/ 12 апреля 2011

Вот что я сделал, и, похоже, он работает нормально.

Я создал свой собственный контроллер представления с вкладками, полученный из UIViewControllerviewDidLoad я добавляю UITabBar внизу представления и устанавливаю делегата для себя, чтобы я мог обрабатывать изменения табуляции.(Я возвращаю это UITabBar как rotatingFooterView). В результате изменения вкладки происходит замена текущего контроллера вида, точно так же, как настоящий UITabBarController.При обмене контроллерами представления (иногда UISplitViewController, в котором размещается UINavigationController в главном представлении), я добавляю и размещаю представление контроллера представления в моем представлении выше UITabBar.Я также стараюсь переадресовывать вызовы viewWill / DidAppear / Disappear на текущий контроллер представления, а также каждое из сообщений will / didRotate.

0 голосов
/ 14 декабря 2010

UINavigationController имеет неприятную привычку сдвигать содержимое на 20 пикселей в зависимости от того, где вы его разместили.Я предполагаю, что он делает это здесь, потому что ваш контроллер разделенного представления находится внутри контроллера вкладок, и Apple не благословила этот тип устройства.

...