景观框架尺寸,iOS 7 vs 8 vs 6

时间:2015-03-05 18:33:17

标签: ios iphone ipad

我正在开发一款针对iOS 6.1及更高版本,iPhone和iPad的应用。它主要是openGL并使用GLKit。我有一个简单的颜色选择器来改变颜色。它只是一个有颜色的正方形,还有三个滑块,红色,绿色和蓝色。我正在重载viewWillLayoutSubviews来执行此操作:在纵向模式下,正方形位于顶部,下方有滑块。在横向模式下,滑块向右移动。除了根据模拟器我不断获得意外行为(我只有iPhone 5 iOS 8,它表现良好)。

所以我写了一些调试代码来看看发生了什么:

- (void)viewWillAppear:(BOOL)animated {
    currentOrientation = (UIInterfaceOrientation)[[UIDevice currentDevice]orientation];
    if (currentOrientation == UIInterfaceOrientationUnknown) {
        currentOrientation = [UIApplication sharedApplication].statusBarOrientation;
    }
    NSLog(@"Device: %@ OS: %@ Orientation: %@", ([SystemInfo deviceType] == iPad)?@"iPad":@"iPhone",
                                                ([SystemInfo operatingSystemIs8OrGreater])?@"8":@"7",
                                                (UIInterfaceOrientationIsPortrait(currentOrientation)?@"portrait":@"landscape"));
    NSLog(@"Frame dimensions: width=%d height=%d", (int)self.view.frame.size.width, (int)self.view.frame.size.height);
    NSLog(@"Bounds dimensions: width=%d height=%d", (int)self.view.bounds.size.width, (int)self.view.bounds.size.height);

SystemInfo只是一个返回系统信息的小类。我在iPhone 5和iPad 2模拟器上运行它,iOS 7.1和8.1,纵向和横向。这就是我得到的:


iPhone 5(7.1)
设备:iPhone OS:7方向:纵向
框架尺寸:宽度= 320高度= 568
边界尺寸:宽度= 320高度= 568

设备:iPhone OS:7方向:横向
框架尺寸:宽度= 568高度= 320
边界尺寸:宽度= 568高度= 320

iPhone 5(8.1)
设备:iPhone OS:8方向:纵向
框架尺寸:宽度= 320高度= 568
边界尺寸:宽度= 320高度= 568

设备:iPhone OS:8方向:横向
框架尺寸:宽度= 320高度= 568
边界尺寸:宽度= 320高度= 568

iPad 2(7.1)
设备:iPad OS:7方向:纵向
框架尺寸:宽度= 768高度= 1024
边界尺寸:宽度= 768高度= 1024

设备:iPad OS:7方向:横向
框架尺寸:宽度= 1024高度= 768
边界尺寸:宽度= 1024高度= 768

iPad 2(8.1)
设备:iPad OS:8方向:纵向
框架尺寸:宽度= 320高度= 568
边界尺寸:宽度= 320高度= 568

设备:iPad OS:8方向:横向
框架尺寸:宽度= 320高度= 568
边界尺寸:宽度= 320高度= 568

似乎iOS 7通过将框架尺寸翻转到它们应该是什么来帮助我,除了我已经翻过它们,因为iOS 8没有。这无关紧要,我可以适应。但我有4个问题:

1)iOS 6有什么作用?我定位它并且我不再拥有模拟器了。

2)iPad 2(8.1)模拟器的用途是什么?它的尺寸与iPhone 5(8.1)相同。结果,我的颜色选择器大约1/4大小。我应该将尺寸设置为1024x768 landscape 768x1024 portrait?

3)iOS 9会做什么? (或者也许他们会像微软一样跳过9并直接进入iOS X - 哇,如果我现在感到困惑,那真的会有所作为。)

4)下一代iPad的尺寸是多少?我能指望1024和768吗?我突然想到在iPad Retina模拟器上运行代码,结果与iPad 2完全相同。

提前致谢。我知道这与其他问题有点相似,但它们对我来说似乎都很模糊。

1 个答案:

答案 0 :(得分:0)

啊,我想我已经明白了。在故事板中有一个标有“内容大小”的框,您可以在其中选中“使用首选显式大小”。我猜它默认是检查过的。取消选中它,iOS 7和8的行为相同。我猜iOS 6也会。

我希望我一周前知道这件事!我仍然没有弄清楚为什么iOS 8上的iPad会将320x568作为尺寸发送到我的颜色选择器(它从笔尖加载而我有预感问题就在那里)。