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];
}];
}