1

多くのページを含む、iPad アプリに水平方向にスクロールするページング UIScrollView があります。最後のページで、画面上のボタンをタップしてリセットし、ページ 1 に戻ります。このトランジションをクロス ディゾルブできるようにしたいのですが、うまくいかないようです。

[UIView transitionWithView:self.view duration:1.0 options:UIViewAnimationOptionTransitionCrossDissolve|UIViewAnimationOptionAllowAnimatedContent animations:^{
    pagingScrollView.contentOffset = CGPointZero;
} completion:^(BOOL finished) {
    [self refreshPages];
}];

追加UIViewAnimationOptionAllowAnimatedContentするとすべてのコンテンツが移行できると読みましたが、機能しません。代わりに、画面は背景色にクロス ディゾルブし、トランジションが完了すると最初のページが表示されます。

4

1 に答える 1

7

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];
    }];
于 2012-11-12T14:04:10.387 に答える