0

終了時にアニメーション化されている画像を削除することになっているアニメーションを作成しました。何らかの理由で、機能していません (つまり、画像が削除されていません)。私が間違っていることはありますか?:

[UIView animateWithDuration:1.8 delay:0 options:UIViewAnimationOptionCurveEaseInOut
                 animations:^{
                     appleView[i].frame = CGRectMake(applePosition, 400.0, 25.0, 25.0);
                 }
                 completion:^(BOOL finished){ [appleView[i] removeFromSuperview]; }];
4

3 に答える 3

1

考えられる理由は、それappleView[i]がゼロであるということです。完了ブロック内にブレークポイントを設定し、それを確認します。

于 2012-12-07T03:57:05.500 に答える
0

appleView はローカル変数ですか、それともクラス メンバーですか? 他にappleViewを変更するものはありますか?

完了ブロックは、アニメーションを開始してから約 1.8 秒後に実行されます。appleView がクラス メンバーであり、何かが変更された場合、間違ったものを削除する可能性があります。次のように、ローカル変数で appleView[i] をキャプチャしてみてください。

UIView *goingAway = appleView[i];
[UIView animateWithDuration:1.8 delay:0 options:UIViewAnimationOptionCurveEaseInOut
       animations:^{
           goingAway.frame = CGRectMake(applePosition, 400.0, 25.0, 25.0);
        } completion:^(BOOL finished){
           [goingAway removeFromSuperview];
        }];
于 2012-12-07T06:18:16.847 に答える