LV1

駆け出し三十路プログラマー奮闘記。iPhone/Macを中心に絶賛修行中。

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を用意してアルファ値を変更する等のアプローチが必要になりそうです。