理想情况下,应该有某种常量来包含这个值。
我正在实现自己的过渡动画代码,并且希望它们与平台过渡动画具有相同的长度。
理想情况下,应该有某种常量来包含这个值。
我正在实现自己的过渡动画代码,并且希望它们与平台过渡动画具有相同的长度。
在iOS 7及其后续版本中,您可以通过设置UINavigationController
委托并使用以下方法来获取精确值:
- (void)navigationController:(UINavigationController *)navigationController
willShowViewController:(UIViewController *)viewController
animated:(BOOL)animated {
NSTimeInterval duration = [viewController.transitionCoordinator transitionDuration];
}
如果默认时长将来发生变化,这是一种未来可靠的方法。目前它的值为0.35秒。
没有包含这个值的常量。但是,可以使用以下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
UINavigationControllerHideShowBarDuration
) - zekelUINavigationController.hideShowBarDuration
的时间似乎比推入/弹出动画要快。 - Bryan Bryce