自動回転するように設定された単純なタブ バー アプリを作成しています。デバイスの向きに応じて、画面上にオブジェクトを再描画する必要があります。通知をオンにして、画面の現在の幅を取得しようとします。すべてが機能していますが、横向きモードでは縦向きの幅になり、その逆も同様です!@?
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を含めるように書き直しました。そこからこの問題が始まりました。
解決策を上下に検索しましたが、わかりません。ここで何が起こっているのですか?