Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios iphone-撤消或反转kCATransitionPush以将图像发送到屏幕外_Ios_Iphone_Objective C_Core Animation - Fatal编程技术网

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

Ios iphone-撤消或反转kCATransitionPush以将图像发送到屏幕外,ios,iphone,objective-c,core-animation,Ios,Iphone,Objective C,Core Animation,我当前正在使用CATTransition从屏幕右侧滑入动画图像: CATransition *transition = [CATransition animation]; transition.duration = TRANSITION_DURATION; transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut]; transition.type

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

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中,我将创建另一个具有此反向的CATTransition动画,以将其从屏幕上发送出去。

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

[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];

这不是理想的解决方案,但有一种方法是设置帧边界更改的动画,或者应用平移变换动画:

[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];

您是否尝试了KCATransionFromLeft版本的推送转换?它应该与FromRight相反。

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

是的,谢谢。我确实试过了,但它使图像从左边出现,而不是从右边消失。你需要从左边推动“下方”视图,而不是图像。这应该会有你想要的效果。我可能不理解你的意图,但从左到右应该是有效的-你可以将图层的图像设置为nil(或者在上面的代码运行之前的任何图像),这样转换看起来是正确的(那里的图像向右滑动)。您可以在添加转换之前或之后执行此操作。是的,谢谢。我确实试过了,但它使图像从左边出现,而不是从右边消失。你需要从左边推动“下方”视图,而不是图像。这应该会有你想要的效果。我可能不理解你的意图,但从左到右应该是有效的-你可以将图层的图像设置为nil(或者在上面的代码运行之前的任何图像),这样转换看起来是正确的(那里的图像向右滑动)。您可以在添加转换之前或之后执行此操作。