1枚のUIImageViewで画像をクロスフェードする
CATransitionを使うことで1枚のUIImageViewだけでも画像のクロスフェードが実現できました。
void crossfade(UIImageView* view, NSString* imageName) { CATransition* transition = [CATransition animation]; transition.duration = 2.0f; transition.type = kCATransitionFade; [view.layer addAnimation:transition forKey:nil]; UIImage* image = [UIImage imageNamed:imageName]; view.image = image; }
もともとは、
[UIView animateWithDuration:animations:]
を試したんですが、このアニメーションブロックの中でview.imageを変更してもアニメーションされませんでした。この場合は、2枚のUIImageViewを用意してアルファ値を変更する等のアプローチが必要になりそうです。