我想使用动画来翻转和展开按钮
代码:
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:5.0];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:mybutton cache:YES];
[mybutton setFrame:CGRectMake(mybutton.frame.origin.x, mybutton.frame.origin.x, 200, 200)];
[UIView commitAnimations];
此动画有问题:
- 按钮正在翻转,但是在半圆翻转后它会膨胀
- 翻转后按钮位置不准确。
我该如何解决?
答案 0 :(得分:0)
尝试完全注释掉setFrame,它应该更好地翻转。还尝试将缓存设置为NO。根据文档,您不应该修改在动画期间转换的视图 - 缓存:NO会有所帮助,但它仍然是不对的。
您通常会有一个父视图提供给setAnimationTransition函数,然后在您将旧子视图从子视图中删除后立即添加新子视图。这给人一种儿童子视图被翻转的错觉,并且新的孩子被翻转成焦点。转换发生在父级,但包含子级。
无论哪种方式,尝试将setFrame注释掉一分钟,它应该看起来更加一致。
答案 1 :(得分:0)
由于它们都是单独的动画,因此您也可以尝试使用动画完成后调用的AnimationDidStopSelector;)
哦顺便说一句,在你的CGRectMake中,你再次使用y坐标x坐标,这可能是位置不准确的原因^^
这样的事情:
- (void)yourFunction {
[UIView beginAnimations:nil context:indexPath];
[UIView setAnimationDuration:0.3];
[UIView setAnimationDelegate:self];
[UIView setAnimationDidStopSelector:@selector(functionEnded:finished:context:)];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight forView:mybutton cache:YES];
[UIView commitAnimations];
}
- (void)functionEnded:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {
[UIView beginAnimations:nil context:indexPath];
[UIView setAnimationDuration:1.3];
[mybutton setFrame:CGRectMake(mybutton.frame.origin.x, mybutton.frame.origin.y, 200, 200)];
[UIView commitAnimations];
}