Как долго длится анимация перехода между представлениями в UINavigationController? - PullRequest
14 голосов
/ 30 сентября 2011

В идеале, должна быть некоторая константа, содержащая это значение.

Я реализую код, который имеет собственные анимации перехода, и я хотел бы, чтобы они имели ту же длину, что и анимации перехода платформы.

Ответы [ 2 ]

21 голосов
/ 27 февраля 2015

В iOS 7 и более поздних версиях вы можете получить точное значение, установив делегат UINavigationController и используя метод:

- (void)navigationController:(UINavigationController *)navigationController
      willShowViewController:(UIViewController *)viewController
                    animated:(BOOL)animated {
    NSTimeInterval duration = [viewController.transitionCoordinator transitionDuration];
}  

Это метод доказательства будущего, если продолжительность сбоякогда-нибудь изменитьсяНа данный момент его значение составляет 0,35 секунды.

19 голосов
/ 30 сентября 2011

Нет константы, содержащей это значение. Однако, используя следующие UINavigationControllerDelegate методы:

- (void) navigationController:(UINavigationController *)navigationController willShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    startTime = [[NSDate date] retain];
}

- (void) navigationController:(UINavigationController *)navigationController didShowViewController:(UIViewController *)viewController animated:(BOOL)animated
{
    NSLog(@"Duration %f", [[NSDate date] timeIntervalSinceDate: startTime]);
}

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

Интересно, что различным частям представлений требуется разное время для перехода на место. Смотрите этот великий пост в блоге для более подробной информации:

http://www.iclarified.com/12396/a-closer-look-at-iphone-transition-animations

...