0

viewController1には子ビューコントローラーがあります(viewController2)。のビューのviewController2.viewサブビューです。viewController1ユーザーのアクションで、そのビューをviewController2スーパービューから削除します。しばらくして、サブビューとして再度追加する必要があります。

問題は、ユーザーがviewController2表示されていないときにデバイスを回転させた場合、デバイスをviewController1のビューに再度追加した後、デバイスが古い向きのままであるため、フレームとサブビューが配置されることです。でもviewController2.view.frame高さがあり、交換されています。

誰かがこれに対する解決策を持っていますか?前もって感謝します!

4

2 に答える 2

2

あなたのコードを見なくても、View Controller 2 が表示されていなくても参照を保持していると思います。その場合、ビューの回転イベントをコントローラーに転送して、次のように回転を認識できるようにする必要があります (転送するイベントごとにこれを行います)。

- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
    [super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];

    // Forward to view controller 2 if it is not displayed
    if (!viewController2.view) {
        [viewController2 willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
    }
}

ビュー コントローラー 2 のビューを削除するのではなく、ビュー コントローラー 2 のビューを に設定することをおhidden勧めします。この場合でも、手動で介入しなくてもイベントを取得できます。

于 2012-12-29T18:40:18.183 に答える
0

あなたの問題を推測させてください。方向に基づいて異なる UIView を表示したいですか?

viewController2方向にニブベースをロードするように更新することです。横向きと縦向きのペン先を作成して、向きによって異なる UI をサポートできます。この回答から見てみてください

それがあなたを助けることを願っています

于 2012-12-29T18:31:15.380 に答える