1

今、私はiPhoneアプリケーションで作業しています.UIImageViewを使用してアニメーションを作成し、正常に動作しています.次に、アニメーションが完了したときに1つのメソッドを呼び出してから、ボタンを画面に表示しようとしましたが、そのボタンが最初に表示された後、アニメーションが開始されます、アニメーションが完了したら、画面にボタンが表示されるようにしたいのですが、この問題を解決するにはどうすればよいですか? 私を助けてください

前もって感謝します

私はあなたの参考のためにこれを試しました:

 - (void)viewDidLoad
    {
        [super viewDidLoad];


        NSArray * imageArray  = [[NSArray alloc] initWithObjects:[UIImage imageNamed:@"cardopen.png"], 
                                         [UIImage imageNamed:@"middlecard.png"],
                                         [UIImage imageNamed:@"thirdcard.png"], 
                                         [UIImage imageNamed:@"a.png"],

                                         [UIImage imageNamed:@"cardopen1.png"],
                                         [UIImage imageNamed:@"middlecard2.png"],
                                         [UIImage imageNamed:@"thirdcard1.png"], 
                                         [UIImage imageNamed:@"2.png"],

                                         nil];

         UIImageView * cardsImage = [[UIImageView alloc] initWithFrame:CGRectMake(10, 0, 400, 300)];
            cardsImage.animationImages = imageArray;
            cardsImage.animationDuration = 8.0;
            cardsImage.animationRepeatCount=1; // one time looping only
            [self.view addSubview:cardsImage];
            [cardsImage startAnimating];  

             [self method1]; // To Call a method1 to show UIButton (Once the animation is completed, then to call a method1)

    }

    -(void)method1
    {
        UIButton *btn = [UIButton buttonWithType:UIButtonTypeRoundedRect];
        btn.frame=CGRectMake(10, 40, 50, 50);
        [self.view addSubview:btn];
    }
4

3 に答える 3

2

(なぜ誰も非同期メソッドの概念を理解していないのですか? これは難しいことですか?)

[cardsImage startAnimating];

アニメーションの終了後ではなく、すぐに戻ります。明示的なタイムアウトを設定する必要があります。

NSTimer *tm = [NSTimer scheduledTimerWithTimeInteral:imageView.animationDuration * imageView.animationCount // assuming animationCount is not 0
    target:self
    selector:@selector(method1)
    repeats:NO
    userInfo:nil];
于 2012-09-20T07:41:13.653 に答える
1

使用する
[self performSelector:@selector(method1) withObject:nil afterDelay:8.0];

それ以外の[self method1];

于 2012-09-20T07:45:07.367 に答える
0

これは、すべてのコードを に入れているためですViewDidLoad。メソッド全体が処理されます。さらに、アニメーションの持続時間が 0.8 に設定されています。これはアニメーションが遅いため、ボタンは正常に表示され、アニメーションはそれに沿って続きます。したがって、実際に行う必要があるのは、NSTimerここで提供されている回答を使用するか、使用することです:)

于 2012-09-20T07:42:46.520 に答える