我们可以改变幻灯片动画的方向吗?

Posted

技术标签:

【中文标题】我们可以改变幻灯片动画的方向吗?【英文标题】:Can we change slide animation direction? 【发布时间】:2011-02-12 18:39:04 【问题描述】:

在我的应用中有一个主表格视图。单击单元格时,会创建一个 DetailView,显示该单元格项目的详细信息。在每个 DetailView 上,我都有下一个和上一个按钮,可帮助用户转到下一个和上一个项目的 DetailView,而无需返回 RootView。当我单击下一步按钮时。动画是从右到左。当我单击上一个按钮时,它也是一样的。当我单击上一个按钮时,动画应该从左到右。反正有没有改变那个动画方向。我不想使用 [self.navigationController popViewControllerAnimated:YES],因为我有很多项目并且很难处理导航堆栈。那么当我单击上一个按钮时,有什么方法可以将动画从右到左更改为从左到右。

【问题讨论】:

您可能希望使用向上和向下箭头,就像邮件导航栏一样。 如何在详细视图之间导航;通过使用 navigationController 作为 pushViewController 或其他一些逻辑?因为你不喜欢 popViewControllerAnimated。 是的,我正在使用 navigationController。 问题已解决。我使用了 popViewControllerAnimated。现在我喜欢它:)。谢谢帮助。保重 【参考方案1】:

它可以实现一个导航控制器并推送和弹出,您不必处理凌乱的导航堆栈,因为您要做的只是 1) 推送一个视图并从堆栈中删除前一个视图 (在“下一个”情况下),或 2)在当前视图前面的堆栈中插入一个视图并弹出当前视图(在“上一个”情况下)。

然而,到目前为止,我认为没有理由在这里使用导航控制器。当您切换到新的详细视图时,将新视图准备为隐藏并将视图插入到视图图层的顶部。然后,创建一个带有所需选项的 CATransition 对象,取消隐藏新视图,并处理以前的详细视图(例如,删除它)。例如,

CATransition transition = [CATransition animation];
transition.duration = 0.75;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionPush;
transition.subtype = (nextDidPressed)? kCATransitionFromRight : kCATransitionFromLeft;
newDetailView.hidden = NO;
detailView.hidden = YES;
self.detailView = newDetailView;

上面的代码对你的视图布局和声明的属性做了一些假设。根据您的代码的其他部分进行适当的更改。

【讨论】:

详见 ViewTransitions 示例项目。 好吧,我接受了你的第一个建议。这真的很容易。这很酷,我们不必担心导航堆栈。好吧,我在这方面很新。但明白了。谢谢你的帮助兄弟。保重

以上是关于我们可以改变幻灯片动画的方向吗?的主要内容,如果未能解决你的问题,请参考以下文章

Vue练习三十:04_03_自动改变方向播放_幻灯片效果

jQuery幻灯片动画

谷歌地图 api 与 jquery 幻灯片的集成存在动画故障

带有 CATransition 的页面幻灯片动画

JavaScript开关中的幻灯片动画不一致

动画中的 UIView 幻灯片