UIView animateWithDuration不起作用

时间:2011-12-05 13:26:57

标签: iphone objective-c animation uiview core-animation

我有一个UIView对象。当我改变全局变量角度时它会旋转。 我有一个函数可以从它的superview中删除这个UIView并重绘它。 我添加了一个按钮。当用户按下此按钮时,我需要启动动画。 在每一步中我都需要改变角度并调用我的重绘功能。因此,我期望看到的是我的观点在旋转。 这是代码:

-(IBAction)animate:(id)sender
{
    NSLog(@"animate: called");
    [UIView animateWithDuration:0.7
                          delay:0.0
                        options: UIViewAnimationCurveEaseOut
                     animations:^{
                     angle=angle+5.0;
                     if (angle>360)
                     {
                         angle=angle-360;
                     }
                     else if(angle<0)
                     {
                         angle=angle+360;
                     };

                     NSLog(@"inner angle: %g", angle);
                     [self transform]; //this is my redraw function. it redraws my view depending on global variable value angle.
                 } 
                 completion:NULL];
NSLog(@"finalAngle: %g", angle);
}

为什么这个动画无法正常工作?

2 个答案:

答案 0 :(得分:1)

UIView动画仅支持以下属性

@property frame
@property bounds
@property center
@property transform
@property alpha
@property backgroundColor
@property contentStretch

你必须用核心动画框架

来执行动画

答案 1 :(得分:0)

您可以为transform属性设置动画。但是,使用transform属性执行旋转比使用CA Framework更复杂。我发现此帖有用:UIView Infinite 360 degree rotation animation?