2011-09-30 63 views

回答

16

没有包含此值的常数。然而,使用以下方法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

+0

很棒的博客文章!感谢您的链接。 – morais

+29

在iOS 8上,动画持续时间似乎为'0.2秒'。 (现在有一个你可以参考的常量:'UINavigationControllerHideShowBarDuration'。) – zekel

+1

这个评论应该是一个答案,它帮了我很多次 – fpg1503

14

的iOS 7,以后你可以通过设置UINavigationController委托和使用该方法具有准确值:

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

这是未来如果不确定的时间会改变的话。目前它的价值是0.35秒。