1

画像をアニメーション化する必要があります。多数の画像があり、これをビデオとして再生する必要があります。プレイの合間に、サーバーで更新されるため、いくつかの画像を変更する必要がある場合があります。再生すると、この新しい画像が自動的に更新されます。

UIImageView を使ってみました。そこでは、アニメーションを制御できません。次に、値のプロパティに画像配列を提供する CAKeyframeAnimation を試しました。アニメーションの再生と一時停止ができました。しかし、ここでも再生中に画像を動的に変更することはできません。

誰でもこの問題を解決するのを手伝ってくれますか?

ありがとうミア

4

3 に答える 3

0

UIImageViewのアニメーションシステムは非常に制限されています。たとえば2つの画像ビューを使用して独自の実装を作成することをお勧めします。

1つの画像ビューで画像を変更し、を使用してフェードインおよびフェードアウトします。UIView animateWithDuration

私はあなたのためにメソッドを書きました。注意:私はそれをテストしていません。

これは、フレームが「frames」と呼ばれる配列にあり、UIIMageView「imgv1」と「imgv2」と呼ばれる2つが互いに重なり合っていることを前提としています。

-(void)performAnimationOfFrameAtIndex:(NSNumber*)indexNum
{        
    int index = [indexNum intValue];
    if(index >= frames.count)
    {
        return;
    }
    UIImage *img = [frames objectAtIndex:index];

    UIImageView *imgIn;
    UIImageView *imgOut;
    if(index % 2 == 0)
    {
        imgIn = imgv1;
        imgOut = imgv2;
    }
    else {
        imgIn = imgv2;
        imgOut = imgv1;
    }
    imgIn.image = img;
    [self.view sendSubviewToBack:imgIn];

    [UIView animateWithDuration:0.1 animations:^{
        imgIn.alpha = 1;
        imgOut.alpha = 0;
    } completion:^(BOOL finished) {
        [self performSelectorOnMainThread:@selector(performAnimationOfFrameAtIndex:) withObject:[NSNumber numberWithInt:index+1] waitUntilDone:NO];
    }];

}
于 2012-04-18T13:12:45.360 に答える
0

2つ使っUIImageViewsて交換。

"animation" に弱い参照があるUIView場合は、完了ブロックでアニメーションが終了したかどうかを必ず確認してください。そうしないと、別のビューに移動したときにパフォーマンスの問題が発生する可能性があり、アニメーション メソッドの再帰呼び出しが続行されます。

- (void)animateImagesAtIndex:(NSNumber *)imageIdx {
    // Do something here
    [UIView animateWithDuration:1 animations:^{
        // Do swap
    }
    completion:^(BOOL finished) {
        if (finished) {
            [self animateImagesAtIndex:imageIdx];
        }
    }];
}
于 2012-06-12T11:35:48.647 に答える
0

UIImageView は、一連の画像のアニメーションをサポートしています。プロパティ animationImages に画像の配列を設定し、メソッド startAnimating および stopAnimating を呼び出すだけです。

于 2012-12-30T17:12:23.897 に答える