0

アプリを縦向きモードで起動してから横向きモードにすると、レイアウトの問題が発生します。その後に開いたビューは、回転に対して間違った値を返します。

たとえば、ポートレート モードから回転した後にビューをランドスケープ モードで開きます。回転をログに記録すると、ポートレート モードが返されます。

NSLog(@"%u", [[UIDevice currentDevice] orientation]); // 4
NSLog(@"%f / %f", self.view.frame.size.width, self.view.frame.size.height); // 748.000000 / 1024.000000

iPadを縦向きモードに回転させて横向きモードに戻すと、正しいサイズが返されます

NSLog(@"%u", [[UIDevice currentDevice] orientation]); // 1
NSLog(@"%f / %f", self.view.frame.size.width, self.view.frame.size.height); // 1024.000000 / 704.000000

新しく追加されたビューを回転に適応させるために必要なことはありますか?

4

3 に答える 3

3

viewWillAppear メソッドでビューの新しいフレームを設定します。これにより、すべてのアイテムが正しいサイズに設定されます。ナビゲーション コントローラーを使用している場合は、ビューをプッシュおよびポップするときに機能します。

于 2012-10-12T15:31:53.540 に答える
0

このリンクのように試してください。それは私のために働いた。willAppearのリンクよりもリンクのようにしたほうがよいでしょうviewDidLoad。また、メソッドで目的の方向を返したことを確認しshouldAutorotateToInterfaceOrientation、 で正しいキーを設定UIInterfaceOrientationしてくださいinfo.plist

于 2012-09-20T16:34:35.367 に答える
0

これは、ビューが初めてポートレート モードとして読み込まれるためです。そのため、viewDidLoad で手動でビューを確認して回転させる必要があります。

if (UIInterfaceOrientationIsLandscape(orientation)) 
{

    [self.view setFrame:VIEW_LANDSCAPE_FRAME];

    //do more stuff

}
于 2012-09-19T11:02:01.503 に答える