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 以将图像发送到屏幕外的主要内容,如果未能解决你的问题,请参考以下文章