3

У меня есть UIViewController без строки состояния, и он запускает второй UIViewController, который имеет строку состояния.Просмотр вытолкнул после шкурок состояния?

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

Я попытался сбросить рамку до начала координат 0,0 в viewDidAppear, но это не влияет.

Почему вид сдвинут вниз и как его исправить?

- (BOOL)prefersStatusBarHidden { 
    return YES; 
} 

- (void)viewDidAppear:(BOOL)animated { 
    [super viewDidAppear:animated]; 
    self.view.frame = CGRectMake(0, 0, self.width, self.height); 
    self.view.backgroundColor = [UIColor redColor]; 
} 

- (void)openShare { 
    Share *share = [[Share alloc] init]; 
    UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:share]; 

    nav.modalTransitionStyle = UIModalPresentationPopover; 
    [self presentViewController:nav animated:YES completion:nil]; 
} 

верх зрения до openShare называется:

enter image description here

верх зрения после Share представлен и освобождаемый:

enter image description here

+0

Вы настроили плоскость для отображения состояния панели управления viewcontroller? И рамка представлений не имеет ничего общего с черным представлением .Замена оконного фрейма может работать, но я не думаю, что это хорошая идея. –

+0

Да, я установил ' UIViewControllerBasedStatusBarAppearance' – Cbas

+0

Как изменить рамку окна? 'window', похоже, не существует в представлении контроллера – Cbas

ответ

0

Вчера я имел точное та же проблема в моем приложении.

Я сделал две вещи, которые решают проблему.

  1. Я установил Top Space to: Top Layout Guide ограничение с константой 20 (такой же, как высота строки состояния) на моей Панели навигации
    Constaint
  2. Я добавил это в контроллерах, которые имеют проблемы ([self.view layoutSubviews])

    -(void)viewDidAppear:(BOOL)animated { 
        [super viewDidAppear:animated]; 
    
        [self.view layoutSubviews]; 
    } 
    
+0

У меня нет навигационной панели. Я попробовал второе решение, но оно не имело эффекта – Cbas

+0

Навигатор был примером. Используйте это решение с любыми элементами управления –

+0

И вам нужно сделать 1. + 2. Или это не работает –

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