0

私は持っています:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
return YES;

}

すべてのビューコントローラーでは、アプリの概要ですべての回転が選択され、info.plistではすべての回転がサポートされているキーに追加されます。私も持っています:

autoresizesSubviews = YES;

ペン先を使用していないため、念のためすべてのViewControllerに追加しました。

今ここでそれは奇妙になります。iPadで、アプリを開く前にデバイスが横向きになっている場合は、アプリを開いて、アプリを強制的に閉じて再起動するまで、横向きに回転するサブビューをロードします。アプリを削除して再構築しようとしましたが、いくつかの物理デバイスでこれを試しましたが、まだ変更されていません。shouldAutoRotateメソッドにNSLog呼び出しを追加しましたが、呼び出されることはありません。UINavigationControllerをダミーのnagコントローラーでサブクラス化し、shouldAutoRotateメソッドをダミークラスに追加してみました。

最後に、横向きに設定すると、ステータスバーのみが横向きになり、残りのビューは標準の縦向きになります。

これの診断をどこから始めればよいかについてのアイデアはありますか?

4

2 に答える 2

1

あなたはあなたのに設定self.window.rootViewControllerしましたか?iOS 5以下では、を設定していなくてもアプリが正しく回転することに気づきましたが、iOS6で設定する必要があります。AppDelegatedidFinishLaunchingWithOptionsrootViewController

また、iOS 6で自動回転が(わずかに?)変更されたことも注目に値します。自動回転の動作には、1つの方法()だけでなく、shouldAutorotateToInterfaceOrientation2つの方法(shouldAutorotatesupportedInterfaceOrientations)があります。

于 2012-12-01T03:27:59.353 に答える
0

新しいバージョンのiOSでは、自動回転は非常に面倒です。アップルのベースのViewControllerと少し違うことをしたい場合は、面倒なので、次のように使用することをお勧めします。

- (void)viewDidAppear:(BOOL)animated {

UIDevice *device = [UIDevice currentDevice];                    //Get the device object
[device beginGeneratingDeviceOrientationNotifications];         //Tell it to start monitoring the accelerometer for orientation
NSNotificationCenter *nc = [NSNotificationCenter defaultCenter];    //Get the notification centre for the app
[nc addObserver:self                                            //Add yourself as an observer
       selector:@selector(orientationChanged:)
           name:UIDeviceOrientationDidChangeNotification
         object:device];



}

- (void)viewWillDisappear:(BOOL)animated {

[[NSNotificationCenter defaultCenter] removeObserver:self];

}

アニメーションを自分で作成すると、アップルのデフォルトの方法でフラグとすべてを正しく設定しようとするよりも多くの時間を節約できると信じています

- (void)orientationChanged:(UINotifiacion*)notification {

UIDevice *device = (UIDevice *)[notification object];
if (UIInterfaceOrientationIsLandscape([device orientation])) {
  [UIView animateWithDuration:0.4 animations:^{
    self.view.transform = CATransform3DMakeRotation(M_2_PI, 0, 0, 1);
      }];

   }

}
于 2012-12-01T02:38:38.603 に答える