我想实现iOS天气应用程序,如转换、ListView,点击列表项它会展开到详细视图,或者捏合列表也会展开到详细视图。
左右滑动过渡。请让我知道如何实施。
提前致谢。
Here is 我在博客上找到的一些帖子 http://www.teehanlax.com/blog/custom-uiviewcontroller-transitions/这解释了 Apple 在 iOS 7 上新的 Transitioning API,仔细阅读它。
简而言之,步骤如下
1 - 在控制器上设置转换委托
您可能需要自定义 3 种类型的过渡:
-
UINavigationController
推入和弹出转换
-
UItabBarController
选项卡更改转换
- 任何模态演示
presentViewController:animated
这 3 种情况中的每一种都提供了自己的“转换委托”协议:
UINavigationControllerDelegate
UITabBarControllerDelegate
-
UIViewControllerTransitioningDelegate
当您从代码中的某个位置使用演示方法时:
-
pushViewController:animated:
or popViewControllerAnimated:
setViewControllers:animated:
presentViewController:animated
然后,如果需要动画,这些代表会要求我所谓的“动画师”。
我所说的“动画师”是一个符合协议的对象<UIViewControllerAnimatedTransitioning>
(or <UIViewControllerInteractiveTransitioning>
在交互转换的情况下,例如手势驱动的交互)。这将动画与你的UIViewControllers
(里面可能已经有大量代码)
2 - 写“动画师”
这是负责动画转换的对象。这可以是一个 viewController,也可以是一个全新的 NSObject。
对于 UINavigationController,您可以为推送和弹出操作定义不同的动画器。
3 - 将动画所需的属性添加到动画制作器中,并对动画进行编码
“动画师”可能会实现不同的协议,具体取决于您尝试自定义的转换。
对于非交互式动画,有以下方法:
- (NSTimeInterval)transitionDuration:(id<UIViewControllerContextTransitioning>)transitionContext
:定义动画的持续时间
- (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext
这就是牛肉的去向。请参阅上面链接中的示例代码,
- (void)animationEnded:(BOOL)transitionCompleted
播放动画后进行任何清理。
在您的情况下,您可能需要添加一些“原点”和“目标”UIView
动画师类中的属性(当然是弱属性!)
然后,当您检测到用户点击了“哪个”视图时。 (在你的UITableVIewDelegate
or UICollectionViewDelegate
didSelect 方法),您告诉动画师,以便它可以使用该特定帧进行动画处理,然后根据您的导航逻辑调用 'push'、'pop' 或 'presentViewController' 。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)