iphone - 撤消或反转 kCATransitionPush 以将图像发送到屏幕外

Posted

技术标签:

【中文标题】iphone - 撤消或反转 kCATransitionPush 以将图像发送到屏幕外【英文标题】:iphone - undo or reverse kCATransitionPush to send image off screen 【发布时间】:2013-12-13 06:13:49 【问题描述】:

我目前正在使用 CATransition 从屏幕右侧滑入动画图像:

CATransition *transition = [CATransition animation];
transition.duration = TRANSITION_DURATION;
transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
transition.type = kCATransitionPush;
transition.subtype = kCATransitionFromRight;
[self.layer addAnimation:transition forKey:nil];
self.image = [UIImage animatedImageNamed:prefix duration:ANIMATION_DURATION];

我的问题是,如何将图像滑出?一旦图像动画循环通过,我想将它从屏幕上发送到它来自的方向,即 TransitionToRight,但似乎没有这样的过渡类型。请建议我如何完成这种反向转换。

如果存在这样的反向转换,我可能会这样写:

[self performSelector:@selector(removeAnimatedImage) withObject:nil afterDelay:ANIMATION_DURATION];

在 removeAnimatedImage 中,我将创建另一个具有此相反方向的 CATransition 动画以将其发送到屏幕外。

【问题讨论】:

【参考方案1】:

您是否尝试过推送转换的 kCATransitionFromLeft 版本?它应该是 FromRight 的倒数。

【讨论】:

好的,谢谢。我确实尝试过,但它使图像从左侧出现,而不是从右侧消失。 您需要从左侧推送“下方”视图,而不是图像。这应该有你想要的效果。 我可能不理解你的意图,但是 fromLeft 应该可以工作——你将图层的图像设置为 nil(或者在上面的代码运行之前的任何值),这样过渡看起来是正确的(什么是那里向右滑动)。您可以在添加过渡之前或之后执行此操作。【参考方案2】:

不是理想的解决方案,但一种技巧是动画帧边界的变化,或应用平移变换动画:

[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:TRANSITION_DURATION];

if (enteredFromRight) 
    self.transform = CGAffineTransformMakeTranslation(SCREEN_SPACE_WIDTH, 0);
 else 
    self.transform = CGAffineTransformMakeTranslation(-SCREEN_SPACE_WIDTH, 0);

[UIView commitAnimations];

【讨论】:

以上是关于iphone - 撤消或反转 kCATransitionPush 以将图像发送到屏幕外的主要内容,如果未能解决你的问题,请参考以下文章

反转图标从白色到黑色、工具或 iPhone sdk

摇动撤消警报

在 CoreData 应用程序上摇动撤消工作,但没有显示撤消/重做提示

iPhone - 界面方向反转?

iOS 4 应用程序终止和撤消

有啥方法可以逆转或撤消 preventExtensions 功能?