【问题标题】:UIScreen.mainScreen is the same size on all devices [duplicate]UIScreen.mainScreen 在所有设备上的大小相同[重复]
【发布时间】:2014-10-22 19:24:00
【问题描述】:

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

我通过运行注意到:

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

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

320
568

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

【问题讨论】:

    标签: ios iphone uiscreen


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      [[UIScreen mainScreen] bounds].size

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

      【讨论】:

        【解决方案3】:

        这不是错误。您可以查看 WWDC 2014 的第 214 场会议以获取更多信息:"View Controller Advancements in iOS8"

        演讲中的引述:

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

        【讨论】:

          【解决方案4】:

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

            + (CGRect)screenBoundsFixedToPortraitOrientation {
                  UIScreen *screen = [UIScreen mainScreen];
          
                  if ([screen respondsToSelector:@selector(fixedCoordinateSpace)]) {
                                  return [screen.coordinateSpace convertRect:screen.bounds toCoordinateSpace:screen.fixedCoordinateSpace];
                  } 
                  return screen.bounds;
              }
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-09-17
            • 1970-01-01
            • 1970-01-01
            • 2012-10-28
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多