18

理想情况下,会有某种包含该值的常量。

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

4

2 回答 2

26

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

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

如果默认持续时间会改变,这是未来的证明方法。目前它的值为0.35秒。

于 2015-02-27T14:16:41.007 回答
22

没有包含此值的常量。但是,使用以下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

于 2011-09-30T10:54:41.013 回答