2

此代码在子类 uiview 的 touchesended 方法中执行,但它没有动画,它只是立即更改背景颜色。怎么了?

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

1 回答 1

1

[UIView commitAnimations]方法不是阻塞的——所以如果你调用它,它会开始动画,但它会在这一点之后立即执行代码。如果您在其下方有任何更改背景颜色的代码,它将破坏您的动画。

如果这不起作用,请尝试为不同的属性设置动画 - 我知道我的头顶位置alpha并且是可动画的,但我不确定颜色。(Alpha 只是一个float值,center 只是一个CGPoint,两者都是基元,但UIColor都是引用类型,UIView 可能不知道如何为指针设置动画。)

于 2011-06-10T08:40:39.427 回答