0

私は2つの異なる画像を持っていますが、それらは本質的に互いに逆です。それらを前後にアニメーション化して、やや感動的な効果を作成したいと思います。AppDelegate didFinishLaunchingには、次のものがあります。

myImageWalk = [[UIImageView alloc] initWithFrame:CGRectMake(0,0, 320, 568)];
    [self.myImageWalk setImage: [self loadingImage]];

    [window addSubview:myImageWalk];
    [window bringSubviewToFront:myImageWalk];

次に、App Delegateにも、次のようなものがあります。

-(UIImage*)loadingImage
{
    NSArray *animationFrames = [NSArray arrayWithObjects:
                                [UIImage imageNamed:@"original.png"],
                                [UIImage imageNamed:@"second.png"],
                                [UIImage imageNamed:@"original.png"],
                                [UIImage imageNamed:@"second.png"],
                                [UIImage imageNamed:@"original.png"],
                                [UIImage imageNamed:@"second.png"],
                                [UIImage imageNamed:@"original.png"],
                                [UIImage imageNamed:@"second.png"],
                                [UIImage imageNamed:@"original.png"],
                                [UIImage imageNamed:@"second.png"],
                                [UIImage imageNamed:@"original.png"],
                                [UIImage imageNamed:@"second.png"],
                                [UIImage imageNamed:@"original.png"],
                                [UIImage imageNamed:@"second.png"],
                                [UIImage imageNamed:@"original.png"],
                                [UIImage imageNamed:@"second.png"],
                                [UIImage imageNamed:@"original.png"],
                                [UIImage imageNamed:@"second.png"],
                                nil];
    return [UIImage animatedImageWithImages:animationFrames duration:6.0f];
}

しかし、何も起こらず、画像は表示されません。私は何が間違っているのですか?

4

2 に答える 2

0

私はそれを試していませんが、おそらくこのブロック内にコードをラップしてみてください:

[UIView animateWithDuration:6f animations:^{

    [UIImage animatedImageWithImages:animationFrames duration:6.0f]

} completion:^(BOOL finished) {
    //Callback after animation was completed
    [view removeFromSuperview];
}];
于 2013-03-26T21:16:28.210 に答える
0

以下のいくつかのコードを試すことができます。一連のimageNamed:を繰り返す必要はないことに注意してください。必要に応じて、1つのループの期間を設定するだけです。

myImageWalk = [[UIImageView alloc] initWithFrame:CGRectMake(0,0, 320, 568)];
myImageWalk.image = [self loadingImage];
self.myImageWalk.animationRepeatCount = 0;

[window addSubview:myImageWalk];
[window bringSubviewToFront:myImageWalk];

//when you want the animation to start
[self animateImages];
//then later at some appropriate time:
[self stopAnimatingImages];

- (UIImage*)loadingImage {
    NSArray *animationFrames = [NSArray arrayWithObjects:
                            [UIImage imageNamed:@"original.png"],
                            [UIImage imageNamed:@"second.png"],
                            nil];
    return [UIImage animatedImageWithImages:animationFrames duration:6.0f];
}
- (void)animateImages {
    if (![self.myImageWalk isAnimating]) {
        [self.myImageWalk startAnimating];
    }
}
- (void)stopAnimatingImages {
    if ([self.myImageWalk isAnimating]) {
        [self.myImageWalk stopAnimating];
    }
}

注:これがテストアプリまたはクラスの割り当てでない限り、didFinishLaunching中に実行される作業を最小限に抑えることがベストプラクティスであるため、このロジックをAppDelegateからViewContollerに移動する必要があります。

于 2013-03-27T03:00:05.170 に答える