我正在编写一个设置为自动旋转的简单标签栏应用。我需要根据设备方向在屏幕上重新绘制一些对象。为此已打开通知并尝试获取屏幕的当前宽度。一切正常,但在横向模式下我得到纵向宽度,反之亦然!@?
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
为什么我没有 横向宽度:1024和纵向宽度:768
这仅在应用程序启动时发生。一旦我点击另一个tabitem,报告就是正确的。
我应该添加我用stroyboard写的这个应用程序之前没有问题,但是由于IOS限制(部署目标)我重写了它包括4.0。这就是问题开始的地方。
上下搜索解决方案,但无法弄明白。 任何想法在这里发生了什么?