我正在使用一些非常标准的代码来翻转一个小视图内的2个UIImageViews。
(我很惊讶它起作用了!)
但是,如果我在一个小视图内有三个UIImageViews并想在所有3个之间切换怎么办?
我以为我可以剪切/粘贴我的代码的2个副本...但是我想不是。
当我尝试翻转1> 2 ..,然后翻转2> 3 ...时,它仅翻转一次...直接从1> 3开始。
2怎么了???
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:myView cache:YES];
[image1 removeFromSuperview];
[myView addSubview:image2];
[UIView commitAnimations];
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:myView cache:YES];
[image2 removeFromSuperview];
[myView addSubview:image3];
[UIView commitAnimations];
最佳答案
动画不会像这样链接在一起。基本上,他们同时制作两个动画。您想要为第二个翻转创建一个新方法,该方法将在第一个翻转完成后调用:
- (void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)contextn {
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:myView cache:YES];
[image2 removeFromSuperview];
[myView addSubview:image3];
[UIView commitAnimations];
}
然后在您现有的方法中,输入以下行:
[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
像这样:
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:myView cache:YES];
[UIView setAnimationDidStopSelector:@selector(animationDidStop:finished:context:)];
[image1 removeFromSuperview];
[myView addSubview:image2];
[UIView commitAnimations];
有关更多信息,请检查apple docs
关于iphone - 在图像1、2、3而不是图像1,3之间切换(iPhone SDK),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2249688/