UIView(スクローラー)をフェードアウトすると同時に、同じビューをフェードインすることはできません...
さまざまなUIViewを使用できます...
あなたができることは:
1)現在の位置(backGround)のスクローラーをfadeOutします
2)スクローラーが表示されていないときに、正しい位置に移動します(アニメーションなし)
3)backGroundからのスクローラーのfadeIn
何かのようなもの:
// START FIRST PART OF ANIMATION
[UIView animateWithDuration:0.5 delay:0.0 options: options:UIViewAnimationOptionTransitionCrossDissolve|UIViewAnimationOptionAllowAnimatedContent animations:^{
pagingScrollView.alpha = 0;
} completion:^(BOOL finished) {
// FIRST PART ENDED
// MOVE SCROLLER (no animation)
pagingScrollView.contentOffset = CGPointZero;
// START SECOND PART OF ANIMATION
[UIView animateWithDuration:0.5 delay:0.0 options: options:UIViewAnimationOptionTransitionCrossDissolve|UIViewAnimationOptionAllowAnimatedContent animations:^{
// fadeIn - animated
pagingScrollView.alpha = 1;
} completion:^(BOOL finished) {
// ANIMATION ENDED
[self refreshPages];
}];
}];
新しい編集:
コメントで何かを教えてくれたamadourに感謝します。
私は彼が彼自身の答えを追加できることを願っています、私は彼に投票します
とにかく、jowieの元の質問に答えるには:
contentOffset設定をアニメーションブロックから移動し、UIViewAnimationOptionAllowAnimatedContent(実際には必要ありません)を削除し、transitionWithViewのパラメーターとしてpagingScrollViewを渡すだけで、適切なアニメーションが得られました。
これは私のために働いた:
pagingScrollView.contentOffset = CGPointZero;
[UIView transitionWithView:pagingScrollView duration:3.0 options:UIViewAnimationOptionTransitionCrossDissolve animations:^{
// pagingScrollView.contentOffset = CGPointZero; // move up, outside of animation block
} completion:^(BOOL finished) {
NSLog(@"-->> END amimation");
[self refreshPages];
}];