0

この質問は多くの人に聞かれますが、私はそれに対する答えを本当に見つけていません。

アニメーションを使用する他の多くのメソッド内にいくつかのクラスがあります

someClass.m
@implementation

////..

-(void) someAnimationWithSomeObject (someParameters...blablabla

    [UIView animateWithDuration:0.2f
                          delay:delay
                        options:UIViewAnimationOptionCurveEaseOut
                     animations:^
     {
         self.center = point;
         self.transform = CGAffineTransformMakeRotation(_angle);
     }
                     completion:nil)];

ViewControllerで

-(void) someMethod1 {
/.....


for (int i=0; i < count; i++) {

/...some operation with coordinates

        [self.cardContainer addSubview:someView];

        [someView someAnimationWithSomeObject:someParameters withDelay:delay];
        delay += 0.2f; 
/... }

[自己 someMethod2];

}

-(void) someMethod2 {
/.....


for (int i=0; i < count; i++) {

/...some operation with coordinates

        [self.cardContainer addSubview:someView];

        [someView someAnimationWithSomeObject:someParameters withDelay:delay];
        delay += 0.2f; 
/... }

}

- (void)viewDidLoad
{
    [super viewDidLoad];

    [self someMethod1];

}

このコードを使用するとsomeMethod2、座標の計算がアニメーションよりも速いため、アニメーションは非常に予測できません。

アニメーションを最初の方法で再生し、次に 2 番目の方法で再生する方法など。

【解決済み】

someMethod1 追加後

 [self performSelector:@selector(someMethod2) withObject:nil afterDelay:delay];

+または-の遅延による修正が必要です

よくやった!

4

1 に答える 1

0

最初の完了ブロックで2番目の方法を開始することを検討してください。つまり、「このアニメーションを実行します。それが終了したら、呼び出しsomeMethod2て次のアニメーションを開始します。

于 2013-02-16T04:18:49.020 に答える