0

imagaviewsでビューに追加した 8がありsize (0,0)ます。今私がやりたいことは、各imageViewをUIViewanimation. 私は2つのアニメーションをやりたいです。最初にサイズは from に移動し(0,0) --> (105,85)、その後 imageview のサイズは from に移動する必要があります (105,85) --> (93,75)

これで、最初にすべての imageViews を正しい場所に配置するメソッドができました。すべての画像にsize (0,0)は最後にメソッドを呼び出しますstartAnimating

-(void)startAnimating{
    [self animageButton:[arrButtons objectAtIndex:0]];
}

次に、最初のビュー アニメーション ( from (0,0) --> (105,85) )

-(void)animageButton:(UIImageView *)imgButton{
    loopIndex++;
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:2.0];
    [UIView setAnimationDelegate:self];
    CGRect btnFrame = imgButton.frame;
    btnFrame.size.width = 105;
    btnFrame.size.height = 85;
    [UIView transitionWithView:self.view
                      duration:0.5f
                       options:UIViewAnimationOptionCurveEaseIn
                    animations:^{
                        imgButton.frame = btnFrame;
                    }
                    completion:nil];
    [UIView commitAnimations];
    [self animageButton2:imgButton];


}

これは 2 番目のメソッドを呼び出します ((105,85) --> (93,75) から)

-(void)animageButton2:(UIImageView *)imgButton{

    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:2.0];
    [UIView setAnimationDelegate:self];
    [UIView setAnimationDidStopSelector: @selector(animationDidStop:finished:context:)];
    CGRect btnFrame2 = imgButton.frame;
    btnFrame2.size.width = 93;
    btnFrame2.size.height = 75;

    [UIView transitionWithView:self.view
                      duration:0.5f
                       options:UIViewAnimationOptionCurveEaseIn
                    animations:^{
                        imgButton.frame = btnFrame2;
                    }
                    completion:nil];
    [UIView commitAnimations];
}

この時点で、最初の imageView をアニメーション化する必要があります。今、アニメーションが終了したとき。私はこれに。

-(void)animationDidStop:(NSString *)animationID finished:(NSNumber *)finished context:(void *)context {
    //do smth
    if(loopIndex <= 7){
         NSLog(@"called");
        UIImageView *imgObj = [arrButtons objectAtIndex:loopIndex];
        [self animageButton:imgObj];
    }else{
        NSLog(@"done");
        return;
    }

}

現時点で行っていることは、すべての画像を同時にアニメーション化することです。しかし、前の画像ビューが終了したときに次の画像ビューがアニメーションを開始することを望みます。

誰でもこれで私を助けることができますか?

4

1 に答える 1

0
-(void)startAnimating
{
    NSTimeInterval delay = 0.0;
    for(UIImageView *imageView in arrButtons)
    {
        [self performSelector:@selector(animageButton:) withObject:imageView afterDelay:delay];
        delay +=1.0;
    }
}

-(void)animageButton:(UIImageView *)imgButton{

    CGRect btnFrame = imgButton.frame;
    btnFrame.size.width = 105;
    btnFrame.size.height = 85;

    [UIView animateWithDuration:0.5f animations:^{
        imgButton.frame = btnFrame;
    } completion:^(BOOL finished) {
            [self animageButton2:imgButton];
    }];
}

-(void)animageButton2:(UIImageView *)imgButton
{
    CGRect btnFrame2 = imgButton.frame;
    btnFrame2.size.width = 93;
    btnFrame2.size.height = 75;

    [UIView animateWithDuration:0.5f animations:^{
        imgButton.frame = btnFrame2;
    } completion:^(BOOL finished) {

    }];
}

私はコードをテストしていません。問題がある場合はお知らせください。ありがとう。

于 2013-06-28T09:10:15.383 に答える