UIScreen.mainScreen在所有设备上的大小相同

时间:2014-10-22 19:24:00

标签: ios iphone uiscreen

我有一个突然出现的奇怪问题。问题是我的应用程序似乎在扩展我的视图,例如将设备从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 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

  

[[UIScreen mainScreen] bounds] .size

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

答案 2 :(得分:0)

这不是一个错误。您可以查看WWDC 2014的会话214以获取更多信息:"View Controller Advancements in iOS 8"

来自演示文稿的引用:

  • UIScreen现在面向接口:
  • [UIScreen bounds]现在面向接口
  • [UIScreen applicationFrame]现在面向接口
  • 状态栏框架通知是面向接口的
  • 键盘框架通知是面向接口的

答案 3 :(得分:0)

您仍然可以解决不同的问题。这是代码:

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

        if ([screen respondsToSelector:@selector(fixedCoordinateSpace)]) {
                        return [screen.coordinateSpace convertRect:screen.bounds toCoordinateSpace:screen.fixedCoordinateSpace];
        } 
        return screen.bounds;
    }