0

重複の可能性:
UIWindow に追加された UIView の向き

ローディング ビューをサブビューとして追加すると[[[UIApplication sharedApplication] keyWindow] addSubview:myView.view](すべてのビューの上に来るように)、アプリが横向きにロックされていても、ビューの向きが縦向きに表示されます。add subview として直接追加すると、これは起こりません。

なぜ私がどこで間違っているのか考えていますか?

4

2 に答える 2

0

コードがないとわかりにくいですが、サブビューをウィンドウに直接追加すると、ルート ビュー コントローラーのビューのサブビューではなく、向きの通知を受け取ることが原因である可能性があります。ウィンドウのサブビューに直接追加することを避けるか、必要に応じて、次のようにオリエンテーション通知に登録します。

[[NSNotificationCenter defaultCenter] addObserver:myView
                                         selector:@selector(orientationChanged:)
                                             name:UIDeviceOrientationDidChangeNotification
                                            object:nil];  

myView次に、 View Controller に適切なメソッドを追加して、それを処理します。

于 2012-09-09T21:58:25.543 に答える
0

コードがない場合も推測しますが、別の理論は、ビューを所有する ViewController が- (BOOL)shouldAutorotateToInterfaceOrientation:ポートレートに対してのみ真の値で応答するというものです (xcode が提供するテンプレート vc コードの多くはデフォルトでこれを行うと思います)。

提供されたわずかなコードから、私たちが話している ViewController は myView と呼ばれている可能性があります (私が正しいとすれば、ViewController のインスタンスに「myView」という名前を選択するのは適切ではありません)。ViewController の shouldAutorotate の実装を確認してください... 向きが横向きの場合に YES と応答することを確認してください。

于 2012-09-09T22:54:41.997 に答える