2

このコードは、サブクラス化されたuiviewのtouchedendメソッドで実行されていますが、アニメーション化されず、背景色が即座に変更されます。なにが問題ですか?

    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が、色がわかりません。(アルファは単なるfloat値であり、センターは単なる値でありCGPoint、どちらもプリミティブですUIColorが、参照型であり、UIViewはポインターをアニメーション化する方法を知らない場合があります。)

于 2011-06-10T08:40:39.427 に答える