代わりにこれを試してください
[UIView transitionWithView:self.imageView...
使用[UIView transitionWithView:self.scrollView...
することで、基本的に「ねえ、スクロールビュー全体をアニメーション化したい」と言っていることになりますが、これはおそらく望まないでしょう。特定の変更された画像ビューのみを常にアニメーション化する必要があります。
編集:
このコードを見てください。画像ビューで画像を変更するクロスフェード (クロス ディゾルブ) アニメーションを実行します。それは正常に動作します。私はこのコードを何度も使用しました。
[UIView transitionWithView:imageView
duration:0.4
options:UIViewAnimationOptionTransitionCrossDissolve | UIViewAnimationOptionAllowUserInteraction
animations:^{
// Set the new image
// Since its done in animation block, the change will be animated
imageView.image = newImage;
} completion:^(BOOL finished) {
// Do whatever when the animation is finished
}];
私があなたの問題を正しく理解していれば、問題がどこにあるかの説明は次のとおりです。
[UIView transitionWithView:self.scrollView
スクロール ビュー全体のアニメーションを開始します。クロス ディゾルブ アニメーションには、次の手順が含まれます。
- アニメーションビュー(あなたの場合はスクロールビュー)のレイヤーの「スナップショット」を作成します
- アニメーション ブロックで変更を実行する
- ビューの新しいスナップショットを作成します。今回は、スナップショットには既に変更が含まれています (イメージ ビューには新しいイメージがあります)。
- 2 つのスナップショットのクロス ディゾルブ (クロス フェード) を実行します。
- 終わり
ここで、問題の原因を確認できます。不適切に定義されたアニメーション ブロック ビューが原因で、複数のスクロール ビュー アニメーション (クロスフェード) が混在している可能性があります (内部イメージ ビューだけでなく、スクロール ビュー全体)。