在方向改变后,我是否应该预计iPhone和iPad之间的屏幕尺寸不一致?

时间:2016-06-15 22:40:35

标签: ios iphone ipad screen-orientation

在iOS 9.3 iPhone和iPad(实际设备和模拟器)中,我在方向更改通知后获得有关[UIScreen mainScreen].bounds的信息(设备和模拟器之间)不一致。

我的视图控制器会在视图加载时添加方向更改通知:

[[NSNotificationCenter defaultCenter]
 addObserver:self
 selector:@selector(deviceOrientationDidChangeNotification:)
 name:UIDeviceOrientationDidChangeNotification
 object:nil];

方向更改时的行为如下:

- (void) deviceOrientationDidChangeNotification:(NSNotification *) notification {
    CGRect frame = [UIScreen mainScreen].bounds;
    NSLog(@"Main screen is w=%f h=%f", frame.size.width, frame.size.height);
}

在iPhone上运行此功能,在方向更改后,日志消息指示与帖子方向更改屏幕尺寸对应的框架宽度和高度。

在iPad上运行此功能,在方向更改后,日志消息指示与方向更改屏幕尺寸对应的框架宽度和高度。

这种不一致的东西需要编码吗?我可以开始尝试检测方向是什么(横向或纵向),然后使用有意义的宽度和高度值,但这很糟糕。

1 个答案:

答案 0 :(得分:0)

处理此问题的正确方法是避免使用通知系统,而是使用      - (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id)coordinator

UIViewController上的

方法,您希望在其中调整UI以进行方向更改。