0

В моем корневом представлении я создаю контроллер навигации и добавляю его на 20 пикселей ниже строки состояния.Панель навигации перемещается вверх, пока поп-анимация навигационного контроллера

My Navigation View бар контроллер

Статус отображается нормально.

enter image description here

Когда я нажимаю назад, (замороженная Анимация для экрана).

Вид перемещается вверх, когда происходит анимация. И После того, как он завершится, появится строка состояния.

enter image description here

Код: Это, как я добавить навигационный контроллер к моему VC

В RootView:

navController = [[UINavigationController alloc]initWithRootViewController:myView]; 

navController.navigationBar.translucent = YES; 
navController.view.autoresizingMask = UIViewAutoresizingNone; 

if ([[[UIDevice currentDevice] systemVersion] floatValue] >= 7) { 
    CGRect frame=navController.view.frame; 

    frame.origin.y += 20; 
    frame.size.height-=20; 
    navController.view.frame=frame; 
} 

ответ

1

Этот ответ мне очень помог.

Push/Pop View Controller With Navigation Bar from View Controller Without Navigation Bar

добавить свой навигационный контроллер с первой VC, и он хочет, чтобы панель навигации скрытого

Я был как animated:NO в ниже фрагменте .. Правильное использование должно использовать анимацию boolean из сам делегат.

В VC1: Панель навигации должна быть скрыта

Я должен скрыть навигационную панель, как показано ниже.

-(void)viewWillAppear:(BOOL)animated { 
    // Hide the bar with animation how viewWillAppear is called 
    [self.navigationController setNavigationBarHidden:YES animated:animated]; 
} 

Когда я нажимаю VC2 на VC1, мне нужно включить панель навигации назад. Поэтому в VC1, во время исчезновения, я делаю ниже.

-(void)viewWillDisappear:(BOOL)animated{ 
    // Show the bar with animation how viewWillDisappear is called 
    [self.navigationController setNavigationBarHidden:NO animated:animated]; 
} 

В VC2: Панель навигации должен быть показан

Когда я нажимаю назад в VC2, я на самом деле есть, чтобы скрыть панель навигации снова. Итак, я делаю это в viewWillDisappear.

-(void)viewWillDisappear:(BOOL)animated{ 
    // Hide the bar with animation how viewWillAppear is called 
    [self.navigationController setNavigationBarHidden:YES animated:animated]; 
} 

Главный ключ animated:animated и не animated:NO .. шанс.!

1

Так что я считаю, что это ваша проблема

frame.origin.y += 20; 
frame.size.height-=20; 
navController.view.frame=frame; 

Имеет пчелу n каждый раз, когда ваш просмотр загружается. Я верю, что если вы будете идти вперед и назад, то много раз вид вверх по вашему окну. это? Если да. Убедитесь, что он будет вызываться только один раз.

Надеюсь, это вам поможет.

+0

Спасибо. Это имело смысл, но нет, это называется только один раз. –

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