1

縦から横への画面の回転が発生したときに、ビュー スタックの一番上にあるアプリの UIWindow の境界内に新しい UIView を配置する最も安全で効果的な方法は何ですか? また、横向きから縦向きに戻すときは、このサブビューを削除します。

基本的に、ほとんどのアプリは次のように作成されます。

-UIウィンドウ:

--UIView

---すべてのサブビュー (タブビュー コントローラーを含む)

私は作成したいと思います:

-UIウィンドウ:

--UIView (新規、上に配置)

--UIView

--- すべてのサブビュー (およびここでビュー コントローラーによってトリガーされる)

これは間違っていますか?これを行うのに役立つドキュメントは驚くほど少ないです。

4

3 に答える 3

1

すべてのサブビューを保持するビュー コントローラーを作成する場合は、呼び出される回転関数を使用できます。

willRotateToInterfaceOrientation:duration: および didRotateFromInterfaceOrientation:

だから、チェックした didRotateFromInterfaceOrientation を使用するとしましょう

if(UIInterfaceOrientationIsLandscape(orientation))
{
    [yourView removeFromSuperView];
}
else
{
    [self.view addSubView: yourView];
}
于 2012-05-03T17:08:20.133 に答える
1

ここで私の答えを参照してください: https://stackoverflow.com/a/4960988/202451

そのようなカスタムのことを行うことに近づくはずです

于 2013-02-06T18:15:28.477 に答える
0

私は実用的な解決策を見つけました。より良いものを提供していただけませんか?

    ArtsDayAppDelegate *appDelegate = (ArtsDayAppDelegate*)[[UIApplication sharedApplication] delegate];
    UIView *landscapeView;

    if (!landscapeView) {
        landscapeView = [[UIView alloc] initWithFrame: frame];
    }

    [landscapeView setBackgroundColor:[UIColor blackColor]];
    ..add various views..
    [appDelegate.window.rootViewController.view addSubview:landscapeView];
于 2012-05-17T18:08:52.557 に答える