UINavigationController上视图之间的过渡动​​画有多长?

mor*_*ais 15 cocoa-touch caanimation ios

理想情况下,会有某种常量包含此值.

我正在实现具有自己的过渡动画的代码,我希望它们具有与平台过渡动画相同的长度.

Tom*_*Bąk 23

iOS 7及更高版本中,您可以通过设置UINavigationController委托并使用方法来获得准确的值:

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

如果结果持续时间不断变化,这是未来的方法.目前它的价值是0.35秒.


Ash*_*lls 20

没有包含此值的常量.但是,使用以下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]);
}
Run Code Online (Sandbox Code Playgroud)

......我可以看到持续时间约为0.35秒

有趣的是,视图的不同部分需要不同的时间才能过渡到位.有关更多详细信息,请参阅此博客文章:

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

  • 在iOS 8上,动画持续时间似乎是"0.2"秒.(现在有一个常数你可以参考:`UINavigationControllerHideShowBarDuration`.) (37认同)
  • 此常量仅适用于导航BARS的动画,而不适用于viewController视图本身. (3认同)