269

苹果官网称分辨率为1080p:1920 x 1080

但是,Xcode(今天推出的 8.0 GM)所需的启动屏幕是 2208 x 1242。

谁是对的?

Xcode

4

8 回答 8

309

iPhone 6+ 在内部使用@3x资源以2208×1242736x414点)的虚拟分辨率进行渲染,然后对其进行采样以进行显示。就像在 Retina MacBook 上使用缩放分辨率一样——它可以让它们达到像素资产的整数倍,同时仍然让例如 12 pt 文本在屏幕上看起来相同大小。

所以,是的,启动屏幕需要是那个大小。

数学:

6、5s、5、4s 和 4 都是每英寸 326 像素,并使用@2x 资产来坚持之前所有设备的每英寸大约 160 点。

6+ 是每英寸 401 像素。所以假设它需要大约 2.46 倍的资产。相反,Apple 使用 @3x 资产并将完整输出缩减到其自然规模的 84% 左右。

在实践中,Apple 决定采用 87% 左右的比例,将 1080 变成 1242。毫无疑问,这是为了找到尽可能接近 84% 的值,但仍能在两个方向上产生整数尺寸——1242/1080 = 2208/1920 正好,而如果您将 1080 转换为 1286,则您需要以某种方式垂直渲染 2286.22 像素才能很好地缩放。

于 2014-09-10T00:39:39.103 回答
115

答案是旧应用程序在 2208 x 1242 缩放模式下运行。但是,当为新手机构建应用程序时,可用的分辨率为:Super Retina HD 5.8 (iPhone X) 1125 x 2436 (458ppi)Retina HD 5.5 ( iPhone 6、7、8 Plus ) 1242 x 2208Retina HD 4.7 ( iPhone 6 ) 750 x 1334。这导致了问题中提到的混乱。要构建使用新手机全屏尺寸的应用,请添加以下尺寸的 LaunchImage:1125 x 2436、1242 x 2208、2208 x 1242 和 750 x 1334。


针对新 iPhone 12、12 mini、12 Pro、12 Pro Max 进行了更新

iPhone 12 Pro Max的尺寸, @3x缩放,坐标空间:428 x 926点和1284 x 2778像素,458 ppi,设备物理尺寸为 3.07 x 6.33 英寸或 78.1 x 160.8 毫米。6.7 英寸超视网膜 XDR 显示屏。

iPhone 12 Pro的尺寸, @3x缩放,坐标空间:390 x 844点和1170 x 2532像素,460 ppi,设备物理尺寸为 2.82 x 5.78 英寸或 71.5 x 146.7 毫米。6.1 英寸超视网膜 XDR 显示屏。

iPhone 12的尺寸, @2x缩放,坐标空间:585 x 1266点和1170 x 2532像素,460 ppi,设备物理尺寸为 2.82 x 5.78 英寸或 71.5 x 146.7 毫米。6.1 英寸超视网膜 XDR 显示屏。

iPhone 12 mini的尺寸, @2x缩放,坐标空间:540 x 1170点和1080 x 2340像素,476 ppi,设备物理尺寸为 2.53 x 5.18 英寸或 64.2 x 131.5 毫米。5.4 英寸超视网膜 XDR 显示屏。


iPhone 11 Pro Max的尺寸, @3x缩放,坐标空间:414 x 896点和1242 x 2688像素,458 ppi,设备物理尺寸为 3.06 x 6.22 英寸或 77.8 x 158.0 毫米。6.5 英寸超视网膜 XDR 显示屏。

iPhone 11 Pro的尺寸, @3x缩放,坐标空间:375 x 812点和1125 x 2436像素,458 ppi,设备物理尺寸为 2.81 x 5.67 英寸或 71.4 x 144.0 毫米。5.8 英寸超视网膜 XDR 显示屏。

iPhone 11的尺寸, @2x缩放,坐标空间:414 x 896点和828 x 1792像素,326 ppi,设备物理尺寸为 2.98 x 5.94 英寸或 75.7 x 150.9 毫米。6.1 英寸液态视网膜高清显示屏。

iPhone X Max尺寸@3x缩放(Apple 名称:Super Retina HD 6.5 display"),坐标空间:414 x 896点和1242 x 2688像素,458 ppi,设备物理尺寸为 3.05 x 6.20 英寸或 77.4 x 157.5 毫米.

let screen = UIScreen.main
print("Screen bounds: \(screen.bounds), Screen resolution: \(screen.nativeBounds), scale: \(screen.scale)")
//iPhone X Max Screen bounds: (0.0, 0.0, 414.0, 896.0), Screen resolution: (0.0, 0.0, 1242.0, 2688.0), scale: 3.0

iPhone X尺寸@2x缩放(Apple 名称:Super Retina HD 6.1" display),坐标空间:414 x 896点和828 x 1792像素,326 ppi,设备物理尺寸为 2.98 x 5.94 英寸或 75.7 x 150.9 毫米。

let screen = UIScreen.main
print("Screen bounds: \(screen.bounds), Screen resolution: \(screen.nativeBounds), scale: \(screen.scale)")
//iPhone X Screen bounds: (0.0, 0.0, 414.0, 896.0), Screen resolution: (0.0, 0.0, 828.0, 1792.0), scale: 2.0

iPhone XiPhone X尺寸@3x缩放(Apple 名称:Super Retina HD 5.8" display),坐标空间:375 x 812点和1125 x 2436像素,458 ppi,设备物理尺寸为 2.79 x 5.65 英寸或 70.9 x 143.6 毫米。

let screen = UIScreen.main
print("Screen bounds: \(screen.bounds), Screen resolution: \(screen.nativeBounds), scale: \(screen.scale)")
//iPhone X and X Screen bounds: (0.0, 0.0, 375.0, 812.0), Screen resolution: (0.0, 0.0, 1125.0, 2436.0), scale: 3.0

在此处输入图像描述

iPhone 6、6S、7 和 8的尺寸, @3x缩放(Apple 名称:Retina HD 5.5),坐标空间:414 x 736点和1242 x 2208像素,401 ppi,屏幕物理尺寸为 2.7 x 4.8 英寸或68 x 122 毫米。在缩放模式下运行时,即在 iPhone 6 Plus 上没有新的 LaunchImages 或在设置中选择时,原生比例为 2.88,屏幕为 320 x 568 点,这是 iPhone 5 的原生尺寸:

Screen bounds: {{0, 0}, {414, 736}}, Screen resolution: <UIScreen: 0x7f97fad330b0; bounds = {{0, 0}, {414, 736}};
mode = <UIScreenMode: 0x7f97fae1ce00; size = 1242.000000 x 2208.000000>>, scale: 3.000000, nativeScale: 3.000000

iPhone 6iPhone 6S的尺寸,@2x 缩放(Apple 名称:Retina HD 4.7),坐标空间:375 x 667点和750 x 1334像素,326 ppi,屏幕物理尺寸为 2.3 x 4.1 英寸或58 x 104 毫米。在缩放模式下运行时,即没有新的 LaunchImages,屏幕为 320 x 568 点,这是 iPhone 5 的原生尺寸:

Screen bounds: {{0, 0}, {375, 667}}, Screen resolution: <UIScreen: 0x7fa01b5182d0; bounds = {{0, 0}, {375, 667}};
mode = <UIScreenMode: 0x7fa01b711760; size = 750.000000 x 1334.000000>>, scale: 2.000000, nativeScale: 2.000000

相比之下,iPhone 5为 640 x 1136,iPhone 4 640 x 960。


这是我用来检查的代码(请注意,nativeScale 仅在 iOS 8 上运行):

UIScreen *mainScreen = [UIScreen mainScreen];
NSLog(@"Screen bounds: %@, Screen resolution: %@, scale: %f, nativeScale: %f",
          NSStringFromCGRect(mainScreen.bounds), mainScreen.coordinateSpace, mainScreen.scale, mainScreen.nativeScale);

注意:上传 LaunchImages 否则应用程序将在缩放模式下运行,并且不会显示正确的缩放比例或屏幕尺寸。在缩放模式下nativeScalescale将不一样。在实际设备上,iPhone 6 Plus 上的比例可以是 2.608,即使它没有在缩放模式下运行,但在模拟器上运行时会显示 3.0 的比例。

比较 iPhone 6 和 6 Plus

于 2014-09-10T00:56:13.483 回答
99

真实/物理 iPhone 6 Plus 分辨率为 1920x1080,但在 Xcode 中,您将界面设置为 2208x1242 分辨率(736x414 点),并且在设备上它会自动缩小到 1920x1080 像素。

iPhone 分辨率快速参考:

Device                        Points   Log. Res.  Sc. Real Res.  PPI  Ratio   Size
iPhone 12 Pro Max, 13 Pro Max 926x428  2778x1284  3x  2778x1284  458  19.5:9  6.7"
iPhone 12, 12 Pro, 13, 13 Pro 844x390  2532x1170  3x  2532x1170  460  19.5:9  6.1"
iPhone 12 mini, 13 mini       812x375  2436x1125  3x  2340x1080  476  19.5:9  5.4"
iPhone XS Max, 11 Pro Max     896x414  2688x1242  3x  2688x1242  458  19.5:9  6.5"
iPhone XR, 11                 896x414  1792x828   2x  1792x828   326  19.5:9  6.1"
iPhone X, XS, 11 Pro          812x375  2436x1125  3x  2436x1125  458  19.5:9  5.8"
iPhone 6+, 6S+, 7+, 8+        736x414  2208x1242  3x  1920x1080  401  16:9    5.5"
iPhone 6, 6S, 7, 8, SE2       667x375  1334x750   2x  1334x750   326  16:9    4.7"
iPhone 5, 5S, 5C, SE1         568x320  1136x640   2x  1136x640   326  16:9    4.0"
iPhone 4, 4S                  480x320  960x640    2x  960x640    326  3:2     3.5"
iPhone 3GS                    480x320  480x320    1x  480x320    163  3:2     3.5"

iPhone 分辨率

于 2014-09-23T18:15:39.100 回答
46

您可能应该停止在 iOS 8 中使用启动图像并使用情节提要或 nib/xib。

  • Xcode 6中,打开File菜单并选择NewFile...iOSUser InterfaceLaunch Screen

  • 然后通过单击打开项目的设置

  • General选项卡中,在名为 的部分中App Icons and Launch Images,将 设置Launch Screen File为您刚刚创建的文件(这将设置UILaunchStoryboardName在 中info.plist)。

请注意,模拟器暂时只会显示黑屏,所以需要在真机上进行测试

将 Launch Screen xib 文件添加到您的项目中:

添加新的启动屏幕 xib 文件

将项目配置为使用 Launch Screen xib 文件而不是资产目录:

配置项目以使用启动屏幕 xob

于 2014-09-10T11:10:28.573 回答
24

在物理设备上,iPhone 6 Plus 的主屏幕边界是2208x1242,nativeBounds 是1920x1080。调整到物理显示器的大小涉及到硬件缩放。

在模拟器上,iPhone 6 Plus 的主屏幕 bounds 和 nativeBounds 都是 2208x1242。

换句话说...视频、OpenGL 和其他基于CALayers像素处理的东西将处理设备上真正的1920x1080帧缓冲区(或sim 上的2208x1242)。处理点的事情UIKit将处理2208x1242 (x3) 边界并在设备上适当缩放。

模拟器无法访问在设备上进行缩放的相同硬件,并且在软件中模拟它并没有太大的好处,因为它们会产生与硬件不同的结果。nativeBounds因此,将模拟设备的主屏幕设置为物理设备主屏幕的边界是有意义的。

iOS 8 为UIScreen( nativeScaleand nativeBounds) 添加了 API,让开发人员确定CADisplay对应的分辨率UIScreen

于 2014-09-10T06:17:44.167 回答
13

对于像我这样想知道如何处理遗留应用程序的人,我在这个主题上做了一些测试和计算。

感谢@hannes-sverrisson 的提示,我开始假设旧版应用程序在 iPhone 6 和 iPhone 6 plus 中使用 320x568 视图处理。

bg@2x.png测试是使用带有白色边框的简单黑色背景进行的。背景大小为 640x1136 像素,为黑色,内部白色边框为 1 像素。

下面是模拟器提供的截图:

在 iPhone 6 截图中,我们可以看到白色边框的顶部和底部有 1 个像素的边距,而在 iPhone 6 plus 截图上,我们可以看到 2 像素的边距。这在 iPhone 6 plus 上为我们提供了1242x2204 的已空间,而不是 1242x2208,在 iPhone 6 上为 750x1332,而不是 750x1334。

我们可以假设这些坏点是为了尊重 iPhone 5 的纵横比:

iPhone 5               640 / 1136 = 0.5634
iPhone 6 (used)        750 / 1332 = 0.5631
iPhone 6 (real)        750 / 1334 = 0.5622
iPhone 6 plus (used)  1242 / 2204 = 0.5635
iPhone 6 plus (real)  1242 / 2208 = 0.5625

其次,重要的是要知道@2x 资源不仅会在 iPhone 6 plus(需要@3x 资产)上缩放,还会在 iPhone 6 上缩放。这可能是因为不缩放资源会导致意外的布局,因为到视图的放大。

但是,这种缩放在宽度和高度上并不相等。我尝试使用 264x264 @2x 资源。鉴于结果,我必须假设缩放比例与像素/点比成正比。

Device         Width scale             Computed width   Screenshot width
iPhone 5        640 /  640 = 1.0                        264 px
iPhone 6        750 /  640 = 1.171875  309.375          309 px
iPhone 6 plus  1242 /  640 = 1.940625  512.325          512 px

Device         Height scale            Computed height  Screenshot height
iPhone 5       1136 / 1136 = 1.0                        264 px
iPhone 6       1332 / 1136 = 1.172535  309.549          310 px
iPhone 6 plus  2204 / 1136 = 1.940141  512.197          512 px

重要的是要注意 iPhone 6 的缩放比例在宽度和高度(309x310) 上是不同的。这往往印证了上述理论,即缩放不是宽度和高度成比例的,而是使用像素/点的比例。

我希望这有帮助。

于 2014-10-02T15:19:08.207 回答
12

查看此信息图:http: //www.paintcodeapp.com/news/iphone-6-screens-demystified

它解释了旧 iPhone、iPhone 6 和 iPhone 6 Plus 之间的区别。您可以查看以点、渲染像素和物理像素为单位的屏幕尺寸比较。您还将在那里找到问题的答案:

iPhone 6 Plus - 配备高清视网膜显示屏。缩放因子为 3,然后图像从渲染的 2208 × 1242 像素缩小到 1920 × 1080 像素。

缩小比例为 1920 / 2208 = 1080 / 1242 = 20 / 23。这意味着原始渲染中的每 23 个像素必须映射到 20 个物理像素。换句话说,图像被缩小到其原始大小的大约 87%。

更新:

上面提到的信息图有一个更新版本。它包含有关屏幕分辨率差异的更多详细信息,并且涵盖了迄今为止的所有 iPhone 型号,包括 4 英寸设备。

http://www.paintcodeapp.com/news/ultimate-guide-to-iphone-resolutions

于 2014-09-12T09:12:45.000 回答
4

即使我一般不喜欢 John Gruber 的 Daring Fireball 博客的语气,但他的Larger iPhone Display Conjecture还是值得一读的。

他猜到了,但两种型号的分辨率(以点为单位)和以像素为单位的分辨率都完全正确,除了他(我也不)期望 Apple 构建更小分辨率的物理显示器并按比例缩小(详细信息在 @Tommy 的回答中)。

这一切的要点是,人们应该停止考虑像素,开始考虑点(这种情况已经有很长一段时间了,这不是最近的发明)以及由此产生的 UI 元素的物理尺寸。简而言之,两款新 iPhone 机型在这方面都有所改进,因为物理上大多数元素的尺寸保持不变,您可以在屏幕上放置更多元素(对于每个更大的屏幕,您可以放置​​更多元素)。

我只是有点失望,他们没有为更大的模型保留内部分辨率与实际屏幕分辨率 1:1 的映射。

于 2014-09-10T08:33:52.280 回答