我正在使用一些非常标准的代码来翻转小视图中的2个UIImageViews。 (我很惊讶它有效!)
但是如果我在一个小视图中有 THREE UIImageViews并想在所有3个之间翻转怎么办?
我以为我可以剪切/粘贴我的代码的两个副本......但我猜不是。
当我尝试翻转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];
答案 0 :(得分:1)
动画并没有像这样链接在一起。基本上,他们同时做两个动画。你想要的是为第二次翻转创建一个新方法,在第一次翻转完成后调用:
- (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
答案 1 :(得分:0)
您可以在第二个动画的开头设置0.5秒的延迟。
另外,您可能需要查看关键帧动画以执行更高级的操作。
答案 2 :(得分:0)
吉尔,
在第二个代码块中,执行以下操作。
[UIView beginAnimations:nil context:NULL];
// This will cause your second animation block to wait 0.5 second, which will be
// enough time for the second one to kick in and do it's thing.
[UIView setAnimationDelay:0.5];
[UIView setAnimationDuration:0.5];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromLeft forView:myView cache:YES];
[image2 removeFromSuperview];
[myView addSubview:image3];
[UIView commitAnimations];