6

以下のView Controller(VC)構造体を作っています。

[UINavigationViewController] -> [UIPageViewController] -> [UIViewControllers]

次に、この VC は縦向きと横向きをサポートする必要があります。

私が抱えている問題は、方向を任意の側に変更するときに発生します。

ここに画像の説明を入力

あなたは問題を見ることができます。 ここに画像の説明を入力

赤い部分は UIPageViewController の子 VC の背景色です。
青い部分は UIPageViewController の背景色です。

子 VC は UIPageViewController によって再ルーティングされなかったと思います。私は長い間それを理解してきました。最終的に、次のオーバーライドされた関数をカスタムUIPageViewController に追加する回避策を見つけました。

- (void)didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation
{
    [self setViewControllers:self.viewControllers
                   direction:UIPageViewControllerNavigationDirectionForward
                    animated:NO
                  completion:NULL];
}

回転が終了するとすぐにビューを下に移動しますが。このコードは問題を大まかに解決します。

とにかく、私は本当に素敵で自然な解決策を知りたいです.

UPDATE
私のアプリはiOS6でうまく動作します。それはiOS7のバグでしょうか?

4

1 に答える 1

10

この問題を解決して、カスタム UIPageViewController の [viewDidLoaded] に次の 1 行のコードを配置しました。

self.automaticallyAdjustsScrollViewInsets = NO;

UIPageViewController にはスクロール ビューがあり、それを UINavigationController に埋め込むと、向きが変わるため、正しくレイアウトされないはずです。

幸いなことに、私の解決策は問題に適合しました。

@MirkoCatalano コメントありがとうございます。これらは、正しい解決策を見つけるのに非常に役立ちます。

于 2013-11-04T16:52:05.417 に答える