UINavigationController 上视图之间的过渡动画有多长?
Posted
技术标签:
【中文标题】UINavigationController 上视图之间的过渡动画有多长?【英文标题】:How long is the animation of the transition between views on a UINavigationController? 【发布时间】:2011-09-30 10:27:16 【问题描述】:理想情况下,会有某种常量包含这个值。
我正在实现具有自己的过渡动画的代码,并且我希望它们具有与平台过渡动画相同的长度。
【问题讨论】:
【参考方案1】:在 iOS 7 及更高版本中,您可以通过设置 UINavigationController
委托并使用以下方法获得准确的值:
- (void)navigationController:(UINavigationController *)navigationController
willShowViewController:(UIViewController *)viewController
animated:(BOOL)animated
NSTimeInterval duration = [viewController.transitionCoordinator transitionDuration];
如果默认持续时间会改变,这是未来的证明方法。目前它的值为 0.35 秒。
【讨论】:
【参考方案2】:没有包含这个值的常量。但是,使用以下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
【讨论】:
在 ios 8 上,动画持续时间似乎是0.2
秒。 (现在有一个常量可以参考:UINavigationControllerHideShowBarDuration
。)
这条评论应该是一个答案,它帮助了我很多次
这个常量只适用于导航栏的动画,不适用于viewController视图本身。
UINavigationController.hideShowBarDuration
的时间似乎比推/弹动画快。以上是关于UINavigationController 上视图之间的过渡动画有多长?的主要内容,如果未能解决你的问题,请参考以下文章
带有主 UINavigationController 和详细 UINavigationController 的 UISplitViewcontroller
带有 UINavigationController 的 UITabBarController,在 hidesBottomBarWhenPushed 上隐藏 UINavigationController
在 UINavigationController 内的 UITabBarcontroller 中添加 UINavigationController?
UINavigationController 与 AppDelegate 中的 UISegmentedControl 切换 UINavigationController 的 rootviewcontr
从一个 UINavigationController 到另一个 UINavigationController (Swift iOS 9, xcode 7)