2010-08-09 37 views
2

此代码正在使用子类别的uiview的touchesended方法执行,但它不生成动画,它只是立即更改背景颜色。哪里不对?iPhone UIView动画持续时间只能立即生效

self.backgroundColor = [UIColor blackColor]; 
    [UIView beginAnimations:nil context:NULL]; 

    [UIView setAnimationDuration:20]; 
    [UIView setAnimationCurve:UIViewAnimationCurveEaseOut]; 
    if (score < .40) { 
     self.backgroundColor = [UIColor redColor]; 
    } else { 
     self.backgroundColor = [UIColor greenColor]; 
    } 
    [UIView commitAnimations]; 
+0

是否当您从调用它,它的工作另一个地方,在子类中,甚至在子类之外? – mvds 2010-08-09 00:57:52

+1

正在改变真正的动画颜色? – lukya 2010-08-09 04:25:13

+0

虽然不太可能,但“20”可能被解释而不是被视为浮动。试着给它20.0。此外,请仔细检查该颜色是否为Apple开发人员文档中的“动画属性”。 – mtrc 2010-08-09 15:35:34

回答

1

[UIView commitAnimations]方法不会阻止 - 因此,如果调用它,它会启动动画,但它这一点后,即刻执行代码。如果你有任何代码改变背景颜色,它会破坏你的动画。

如果这不起作用,尝试动画不同的属性 - 我知道我的头顶位置& alpha是动画,但我不确定颜色。 (阿尔法只是一个float值,中心只是一个CGPoint,这两者都是原语,但UIColor是引用类型和的UIView可能不知道如何制作动画的指针。)