0

アプリのマニュアルとして機能する UIPageViewController をアプリに追加しました。ユーザーがそれをポップアップすると、1 ページが縦向きに、2 ページが横向きに表示され、背表紙が中央に表示されます。約 100 ページあるので、その上に兄弟ビュー UICollectionView ページ セレクター ビューがあり、ページにすばやくジャンプできます。UIPageViewController と UICollectionView の両方が、両方を含むバッキング ビュー上にあります。

UIPageViewController で私が抱えている問題は、ビューが最初に回転されたときに、元のレイアウトの短い寸法に制約されているように見えることです。そのため、最初に縦向きで表示された場合、横向きに回転すると、2 ページの幅は古い縦向きの幅と同じになります。同様に、最初に 2 ページで横向きに表示された場合、縦向きに回転すると正しい幅になりますが、高さは最初の横向きの高さになります。これはどのデバイスでも一貫しています。

コンテンツビューを作成すると、それらはすべて私が望むサイズですが、何らかの理由でUIPageViewControllerのコンポーネントによって変換されているように見え、なぜ2つの次元の1つだけを実行しているのか、なぜそれが常に問題となる「短辺」。

これは、私が少し気が狂ったような問題の 1 つです。些細な設定ミスでない場合、どのようにデバッグするかについてのアイデアはありますか?

4

1 に答える 1

1

長いデバッグ期間を経て、ようやく見つけました。重要なヒントは、縦向きから横向きに回転する前に、背骨がビューの幅の正しい中央に設定されていることです。解決策は、ビューのフレームを willAnimateRotationToInterfaceOrientation の方向を指定して新しいサイズにリセットすることでした。

メソッドに渡された期間を使用するアニメーション ブロックを呼び出す前に、新しいサイズを計算してから、ブロック内で次のように計算します。

  pageViewController.view.frame = newFrame;

ページが回転すると、コンテンツ ページを保持するビューが正しいサイズに移動し、背表紙が正しく配置され、コンテンツが指定された領域を埋めます。ビューの複雑さのために非常に多くのデフォルトを引き継ぐ必要があったため、問題に遭遇したと思いますが、これはハングしたままでした。

于 2013-05-02T04:17:07.920 に答える