翻转和大小展开按钮动画

时间:2011-08-21 06:03:42

标签: iphone objective-c animation flip

我想使用动画来翻转和展开按钮

代码:

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

此动画有问题:
- 按钮正在翻转,但是在半圆翻转后它会膨胀 - 翻转后按钮位置不准确。

我该如何解决?

2 个答案:

答案 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];
}