【问题标题】:iPhone XR returns correct nativeBounds but has wrong screen size on deviceiPhone XR 返回正确的 nativeBounds 但设备上的屏幕尺寸错误
【发布时间】:2019-04-15 07:45:37
【问题描述】:

我的项目面向 iOS - 11 及更高版本。它具有正确尺寸的 XR 和 XS Max 的启动图像资产。在模拟器上,我的应用在 XR 和 XS Max 上都能正常运行。

但是,用户报告了真实设备上的 UI 问题。经过一些研究,它在真实设备上看起来像这样

[UIScreen mainScreen].nativeBounds.size

返回正确的值。但似乎设备本身认为它具有 iPhone X 屏幕尺寸(比如当我不使用正确的启动屏幕图像时)。在我看来,它返回错误的值与

[UIScreen mainScreen].bounds.size

我相信这个返回的值不是 iPhone XR 而是 iPhone X。

有人也遇到过这样的问题吗?

【问题讨论】:

  • 你最好添加一些代码。那么我们可能会理解您所说的 错误边界真正错误边界nativeBounds 是什么意思。
  • 修复了一些问题。我相信现在应该更容易理解了。
  • 您谈论的是正确错误值。您最好指定您期望的值和获得的值。否则问题还是太模糊了。
  • 顺便问一下:您在项目中将 Base SDK 设置为什么值?

标签: ios objective-c iphone ios12


【解决方案1】:

就我而言,问题出在特定的用户设备设置上。 设置 -> 显示和亮度 -> 显示缩放开关打开。 这导致返回错误

[UIScreen mainScreen].bounds.size

值运行时

【讨论】:

    【解决方案2】:

    iPhone XR 不使用与 iPhone X 或 iPhone XS 相同的(虚拟)点尺寸。它使用与新 iPhone XS Max 相同的点尺寸,但仅使用 @2x 而不是 @3x 渲染,就像 Max 一样(每英寸像素密度较低)。您可以阅读有关每个 iPhone 型号here 的屏幕尺寸、点数、渲染尺寸等的更多信息。

    XCAssets 中缺少启动图像的模板也会影响新一代 iPad,例如新的 iPad Pro 11" 与标准的 3/4 宽高比略有不同,其他 iPad 有。深入了解缺少模板的问题让我从 2015 年开始了解radar post,关于缺少 iPad Pro 应用程序图标和启动图像模板,其中评论指出:

    [...] and Developer relations reported in a radar comment that they no longer support launch images and will not be adding the iPad pro launch image size to asset catalogs.

    Apple 似乎不鼓励在 XCAssets 中使用启动图像,并建议改用 Launch Screen.storyboard。它将根据使用的设备或模拟器“自动调整大小”为正确的尺寸(以及 UIScreen.main.boundsUIScreen.main.nativeBounds 的输出)。

    【讨论】:

    • 有趣的信息,谢谢。但就我而言,问题出在特定的用户设备设置中。请参阅下面的答案。
    【解决方案3】:

    我遇到了同样的问题,我找到了原因。您可以在 assets 中查看 LaunchImage。有没有 iPhone XR 的图片。如果您没有iPhone XR LaunchImage,XR 的屏幕尺寸将与iPhone X 一起计算。所以为XR 制作一个LaunchImage。 希望这会有所帮助。

    【讨论】:

    • 请仔细阅读问题。它有正确的启动图像。
    猜你喜欢
    • 2019-02-24
    • 2015-12-03
    • 2012-12-10
    • 2021-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-11
    相关资源
    最近更新 更多