IOS 7天气APP喜欢过渡/动画

时间:2013-10-01 15:47:38

标签: ios7

我想实现IOS Weather APP,如转换,ListView,点击列表项,它扩展到详细视图,或者捏到列表也扩展到详细视图。

向左和向右滑动过渡。请让我知道如何实现它。

先谢谢。

2 个答案:

答案 0 :(得分:7)

以下是some post on a blog I found解释iOS 7上的Apple新版Transitioning API,仔细阅读,阅读它。


简而言之,这是步骤

1 - 在控制器上设置过渡委托

您可能想要自定义3种类型的转换:

  • UINavigationController推送&弹出过渡
  • UItabBarController标签已更改过渡
  • presentViewController:animated
  • 的任何模态演示文稿

这3个案例中的每一个都提供了自己的“过渡委托”协议:

  • UINavigationControllerDelegate
  • UITabBarControllerDelegate
  • UIViewControllerTransitioningDelegate

当您从代码中的某个位置使用演示方法时

  • pushViewController:animated:popViewControllerAnimated:
  • setViewControllers:animated:
  • presentViewController:animated

然后,如果需要动画,这些代表会询问我称之为'动画师'。

我称之为“动画师”的是符合协议<UIViewControllerAnimatedTransitioning>的对象(或者在交互式转换的情况下为<UIViewControllerInteractiveTransitioning>,如手势驱动的交互)。这会将动画与UIViewControllers(可能已经包含大量代码)

分开

2 - 撰写'animator'

这是负责动画转换的对象。这可以是viewController,也可以是全新的NSObject。

如果是UINavigationController,您可以为推送和弹出操作定义不同的动画师。

3 - 将动画所需的属性添加到动画师中,然后对动画进行编码

'animator'可能会实现不同的协议,具体取决于您尝试自定义的转换。 在非交互式动画的情况下,这些是方法:

  • - (NSTimeInterval)transitionDuration:(id<UIViewControllerContextTransitioning>)transitionContext:定义动画的持续时间

  • - (void)animateTransition:(id<UIViewControllerContextTransitioning>)transitionContext这就是牛肉的所在。请参阅上面链接中的示例代码

  • - (void)animationEnded:(BOOL)transitionCompleted用于播放动画后的任何清理工作。


在您的情况下,您可能希望在动画类中添加一些“原点”和“目标”UIView属性(当然是弱属性!)

然后,当您检测到用户点击了“哪个”视图时。 (在你的UITableVIewDelegateUICollectionViewDelegate didSelect方法中),你告诉你的动画师它可以用这个特定的帧动画,然后调用'push','pop'或'presentViewController',这取决于你的导航逻辑。

答案 1 :(得分:0)

你绝对可以通过过渡api来解决这个问题。

查看这个项目,我认为这会有所帮助:

https://github.com/chefnobody/Colors

我能够使用Ash Furrow @ Teehan + Lax:http://www.teehanlax.com/blog/custom-uiviewcontroller-transitions/中的这个例子进行一些修改:

要扩充此示例以获取捏拉/拉表视图单元格分离动画,您需要识别所选的表格视图单元格(或者#34;选择&#34;相对于捏合手势&#34;),然后在-animateTransition:中,您将所选单元格上方和下方的实际表格视图单元格设置为动画,从而显示您的详细信息视图控制器。请记住,还要根据您需要的详细信息(在&#34; pop&#34;中)动画回到表格视图,知道将选择哪个单元格(如果它还没有在视图中,则将其滚动回视图然后从屏幕外动画围绕它的细胞,回到视野中。

对于不同城市之间的滑动互动,您将实现一个不同的InteractionController来处理那里的过渡。同样,你可以按照Furrow的例子来弄清楚如何把它拉下来。