現在、_backgroundImageView.image を新しいものと交換する CATransistion があります。それはうまく機能します...そしてすぐに機能しますが、この移行中に前の画像がランダムにグリッチします...別名、移行中のどこかで1フレームの完全な画像をフラッシュしてから、移行を終了します。
コードは次のとおりです。
[CATransaction begin];
CATransition *transition = [CATransition animation];
transition.type = kCATransitionFade;
transition.duration = 0.3;
transition.delegate = self;
[transition setValue:@"swipe" forKey:@"tag"];
[_backgroundImageView.layer addAnimation:transition forKey:nil];
_backgroundImageView.image = [_backgroundImages objectAtIndex:pageControl.currentPage];
[CATransaction commit];
コードの前にこれを追加すると、グリッチは発生しませんが、画像比較がメインスレッドをブロックしているように見えるため、他の UI が途切れ途切れになります (アニメーションもメインスレッドのものであるため、これは必要です)。
if ([UIImagePNGRepresentation(_backgroundImageView.image) isEqualToData:UIImagePNGRepresentation([_backgroundImages objectAtIndex:pageControl.currentPage])]) {
return;
}
ところで、ちらつきはデバイスでは発生しません....少なくとも私が見ることができる限り...だから、この質問は意味がないかもしれません...遷移中にクラッシュが見られました...しかし、それは別の問題かもしれません.