2012-01-28 11 views
2

私はNIPagingScrollViewを使ってiPhoneに複数のページを表示しています。Nimbus NIPagingScrollViewと回転の再レイアウト

私はページにフリックするたびに、次のページもプリロードされています。これは問題ありません。私が縦から横モードに iPhoneを回転させたとき

、私はlayoutSubviewsNIPageViewの私のサブクラスに再レイアウト機能をやらせます。 NIPagingScrollViewは、フルスクリーンを維持するために幅と高さの自動ストレッチに設定されています。これは現在のページで有効です。

しかし、次のページにフリックすると、レイアウトは以前にプリフェッチされていたために壊れ、layoutSubviewsへの自動呼び出しによってレイアウトされます。

私は、回転の次のページで原点が更新されないと思います。

(風景を使用していない以外の)この問題を回避する方法についてのヒントをお持ちですか?これはNimbusのバグですか?

EDIT:私はNIPagingScrollViewは、ビューコントローラによって呼び出されるべきメソッドwillRotateToInterfaceOrientation:duration:willAnimateRotationToInterfaceOrientation:duration:を提供することを発見しました。私はこれらの呼び出しを実装しましたが、それでも助けにはなりません。

答えて

0

実際にはNIPagingScrollViewがこれらのメソッドを提供しますが、それらを見ると、レイアウト計算がスクロールビューのフレーム値に基づいていることがわかります。

たとえば、フレームまたはメインビュー(コントローラビュー)からページングスクロールビュー(この例では_scrollView)への正しい値をページングスクロールビューに与えたい場合。

アニメーションの直前で、ページングスクロールビューに正しい待機フレームがあり、レイアウトが正しく再計算されます。

- (void)willAnimateRotationToInterfaceOrientation: (UIInterfaceOrientation)toInterfaceOrientation 
            duration: (NSTimeInterval)duration { 

    // Your missing line of code to set the scroll view frame values 
    [self->_scrollView setFrame:self.view.bounds]; 

    [self->_scrollView willAnimateRotationToInterfaceOrientation: toInterfaceOrientation 
                 duration: duration]; 

    [super willAnimateRotationToInterfaceOrientation: toInterfaceOrientation 
              duration: duration]; 

} 
+0

このヒントをお寄せいただきありがとうございます。次回このコードを実行する際に試してみましょう。 – fabb

関連する問題