При попытке использовать сдерживание UIViewController от Apple я столкнулся с проблемой анимирования перехода между двумя UIViewControllers.UINavigationBar перескакивает 20 пикселей во время переходаFromViewController
Вот настройка ... Я создал UITabBarController, и на одной из вкладок я создал UIViewController в качестве контейнера. Этот ViewController управляет переходом между UIViewController и UINavigationController. Перед тем мнение:
Когда кнопка Далее сливают мнение начинает это переход с переходом flipFromRight. Во время перехода панель навигации находится в «представлении», но расположена на 20 пикселей вниз от верхнего края представления. Изображение ниже:
Зеленый является цветом фона зрения контейнера. После того, как новый вид завершает переход, то панель навигации щелкает до верхней части представления и конечный результат:
Время оснастки на месте не зависит от продолжительности анимации. Я достигаю конечного состояния, которое я хочу, но переход является проблемой.
Я измерил жизненный цикл viewController и фреймы панели навигации, а UITableView - как указано в XIB. XIB выглядит следующим образом:
Вот код:
В -viewDidLoad -
_fromVC = [[FromVC alloc] initWithNibName:@"FromVC" bundle:nil delegate:self];
[self addChildViewController:_fromVC];
[self.view addSubview:_fromVC.view];
[_fromVC didMoveToParentViewController:self];
В моей кнопки обработчик -
- (void)buttonSelected
{
//
// Create the "to" View controller
//
ToVC *toVC = [[ToVC alloc] initWithNibName:@"ToVC" bundle:nil];
//
// Create the navigation controller for the study activity
//
_toNavCon = [[UINavigationController alloc] initWithRootViewController:toVC];
[self addChildViewController:_toNavCon];
[_fromVC willMoveToParentViewController:nil];
[self transitionFromViewController:_fromVC
toViewController:_toNavCon
duration:0.7
options:UIViewAnimationOptionTransitionFlipFromRight
animations:nil
completion:^(BOOL finished) {
[_fromVC removeFromParentViewController];
[_toNavCon didMoveToParentViewController:self];
}];
}
Там нет кода в «до» контроллера представления, который изменяет внешний вид контроллера представления.
Еще одна информация ... Когда я переключаю строку состояния вызова в тренажере, зазор в верхней части панели навигации является высотой строки состояния «Входящий звонок».
Я просмотрел все в Интернете и ничего не помогает. Кто-нибудь видел это и кто-нибудь его исправил?
Вы не одиноки. У меня аналогичная проблема с пользовательским контроллером представления содержимого. Пока нет разрешения. – Aaron
Одна вещь: параметр анимации не может быть 'nil' или' NULL' в соответствии с документами. Вместо этого добавьте пустой блок: '^ {}'. Вероятно, это не решит вашу проблему, но это может быть проблемой. – Aaron
Я нашел разрешение ... ответ на подкласс UINavigationController (и UITabBarController)) и override - (BOOL) хочет, чтобы FullScreenLayout возвращал NO. Это устранило мои проблемы. Я также отвечу на вопрос. По-видимому, UINavigationController по умолчанию имеет значение YES, и вы не можете просто установить. Кажется, работает для меня. –