为啥 iPhone 模拟器的规模 * 比现实大 *?

Posted

技术标签:

【中文标题】为啥 iPhone 模拟器的规模 * 比现实大 *?【英文标题】:Why does the iPhone Simulator scale *larger* than reality?为什么 iPhone 模拟器的规模 * 比现实大 *? 【发布时间】:2017-04-24 02:52:28 【问题描述】:

我正在运行 iPhone 7 Plus 模拟器,但我看到了一些对我来说没有意义的东西。

iPhone 7 Plus 的屏幕尺寸是 1080x1920,我在 1080P 显示器上纵向运行它,所以它的尺寸也是 1080x1920,它被设置为以显示器的原始分辨率运行,所以我没有操作系统缩放意识到。我也在以 100% 的大小运行模拟器。

现在,由于标题栏和菜单栏,我可以理解为什么垂直屏幕会被剪裁(即使它看起来确实剪裁得更多),但是模拟器被水平剪裁,因为它比屏幕本身宽得多.这让我很困惑,因为侧面甚至没有像素边框。

那么,谁能想到为什么模拟器不会像人们期望的那样以精确的屏幕尺寸显示?有没有办法检查 DPI 设置?我唯一的猜测是 iPhone 显示为 96dpi,显示器显示为 72 或类似的东西,但这纯粹是猜测。

更新 - 在 4K 屏幕上也是如此

更多测试...在我运行原生(即不是 HiDpi)的 4K (3840x2160) 屏幕上运行 iPhone 7 Plus 模拟器,它也垂直显示剪辑,这意味着这里肯定有一些我可以进行的缩放' t 似乎禁用。

【问题讨论】:

iPhone 7 plus 在被下采样到 1080x1920 以适应物理设备的屏幕分辨率之前以 1242x2208 呈现。模拟器不会对 AFAIK 进行这种下采样,而是以完整的 1242x2208 显示它。 有趣。我不知道。你能提供任何参考的资源吗?他们到底为什么要这样做。下采样增加了不必要的处理,不是吗?另外,其他设备尺寸呢? 【参考方案1】:

iPhone 6 Plus 和 7 plus 显示器以 3 倍的分辨率运行。基于 414 X 736 点的显示,这意味着实际上有 1242 X 2208 渲染像素。然后将这些下采样到设备上的 1080 X 1920 显示器。

在模拟器的情况下,当您以 100% 大小运行时,不会发生这种向下采样;您将获得模拟器像素与显示像素的一对一映射;即使在 4K 显示器上也会导致垂直剪辑。

我的假设是,Apple 希望您能够在 100% 的情况下看到每个渲染的像素,而不会产生任何下采样或缩放影响。

这个来自绘制代码的infographic 显示了详细信息

【讨论】:

以上是关于为啥 iPhone 模拟器的规模 * 比现实大 *?的主要内容,如果未能解决你的问题,请参考以下文章

为啥 UIImage 的尺寸比实际尺寸大 3 倍?

为啥输入的文本或字母没有显示在 Iphone 模拟器的 alertView 文本字段中?

为啥应用程序在 iPhone 模拟器中崩溃;我怎样才能解决这个问题?

为啥 Xcode 4.1 说我的 iPad 专用应用程序可以在 iPhone 模拟器中运行?

是否有比删除其目录更快/更好的方法来清除 iPhone 模拟器缓存?

为啥此音频单元 RemoteIO 初始化在 iPhone 上有效,但在模拟器中无效?