1

自動回転するように設定された単純なタブ バー アプリを作成しています。デバイスの向きに応じて、画面上にオブジェクトを再描画する必要があります。通知をオンにして、画面の現在の幅を取得しようとします。すべてが機能していますが、横向きモードでは縦向きの幅になり、その逆も同様です!@?

AppDelegate didFinishLaunchingWithOptions:

[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];

インターフェースviewWillAppear:

NSNotificationCenter* nc = [NSNotificationCenter defaultCenter];
[nc addObserver:self
       selector:@selector(orientationChanged:)
           name:UIDeviceOrientationDidChangeNotification
         object:nil];

インターフェースorientationChanged:

UIInterfaceOrientation orientation = [UIDevice currentDevice].orientation;

if (orientation == UIDeviceOrientationPortrait || orientation == UIDeviceOrientationPortraitUpsideDown)
{
    NSLog(@"Portrait Width: %f", self.view.frame.size.width);
}
else if (orientation == UIDeviceOrientationLandscapeLeft || orientation == UIDeviceOrientationLandscapeRight)
{
    NSLog(@"Landscape Width: %f", self.view.frame.size.width);
}

iPad で取得: 縦幅: 1024 横幅: 768

Landscape Width:1024 と Portrait Width: 768 が表示されないのはなぜですか

これは、アプリケーションの開始時にのみ発生します。別のタブアイテムをクリックすると、レポートは正しくなります。

問題が発生する前にこのアプリをstroyboardで作成したことを追加する必要がありますが、IOSの制限(展開ターゲット)のために、4.0を含めるように書き直しました。そこからこの問題が始まりました。

解決策を上下に検索しましたが、わかりません。ここで何が起こっているのですか?

4

0 に答える 0