0

我有一个奇怪的问题突然出现。问题是,例如,当将设备从 iPhone 6 更改为 iPhone 6 Plus 时,我的应用程序似乎正在缩放我的视图。因此,如果我有一个具有特定字体大小的标题,则相同的标题在 iPhone 6 Plus 屏幕上占用相同数量的空间,而我想要的只是大小相同并且在较大的设备上显得更小。有谁知道这是怎么发生的以及如何解决这个问题?

我通过运行注意到:

NSLog(@"%f", [UIScreen mainScreen].bounds.size.width);
NSLog(@"%f", [UIScreen mainScreen].bounds.size.height);

他在所有模拟器设备上生成相同的输出:

320
568

我希望它在较大的设备上有所不同。这有什么关系吗?

4

4 回答 4

1

您是否为 iPhone 6 和 6 Plus 设备添加了启动图像?否则它将以这些分辨率运行(并且 [[UIScreen mainScreen] bounds] 调用将返回边界,就像在 4 英寸设备中运行一样)。

于 2014-10-22T19:28:49.853 回答
0

这不是一个错误。您可以查看 WWDC 2014 中的会话 214 以获取更多信息: “查看 iOS 8中的控制器进步”

演讲中的引述:

  • UIScreen 现在是面向界面的:
  • [UIScreen bounds] 现在面向界面
  • [UIScreen applicationFrame] 现在面向界面
  • 状态栏框架通知是面向界面的
  • 键盘框架通知是面向界面的
于 2014-10-22T19:31:24.750 回答
0

您仍然可以解决以获得不同的值。这是代码:

  + (CGRect)screenBoundsFixedToPortraitOrientation {
        UIScreen *screen = [UIScreen mainScreen];

        if ([screen respondsToSelector:@selector(fixedCoordinateSpace)]) {
                        return [screen.coordinateSpace convertRect:screen.bounds toCoordinateSpace:screen.fixedCoordinateSpace];
        } 
        return screen.bounds;
    }
于 2014-10-22T19:33:53.623 回答
0

只需添加一个 1136 高度的新的默认 png 照片。

[[UIScreen mainScreen] bounds].size

将返回 4 英寸屏幕的新高度。

于 2014-10-22T19:25:45.837 回答