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

然而,Xcode (8.0 GM今天发布)要求的启动屏幕是2208 x 1242。

谁是对的?


当前回答

尽管我一般不喜欢约翰·格鲁伯的Daring Fireball博客的基调,但他的《更大的iPhone显示屏猜想》还是很值得一读的。

他猜对了,但两款机型的点分辨率和像素分辨率都是完全正确的,除了他(我也是)不希望苹果公司制造分辨率更小的物理显示器并缩小尺寸(详情见@Tommy的回答)。

这一切的要点是,我们应该停止从像素的角度思考,而开始从点的角度思考(这种情况已经存在了很长一段时间,这不是最近的发明)以及UI元素的物理大小。简而言之,这两款新iPhone在这方面都有所改进,因为在物理上,大多数元素都保持了相同的尺寸,你可以在屏幕上容纳更多元素(屏幕越大,你可以容纳更多元素)。

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

其他回答

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

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

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

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

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

你应该在iOS 8中停止使用启动图像,而使用故事板或nib/xib。

在Xcode 6中,打开文件菜单并选择新建⟶文件…⟶iOS⟶用户界面⟶启动界面。 然后通过单击打开项目的设置。 在General选项卡中,在App Icons和Launch Images部分,将启动屏幕文件设置为你刚刚创建的文件(这将在info.plist中设置UILaunchStoryboardName)。

请注意,目前模拟器只会显示黑屏,所以您需要在真实设备上进行测试。

添加一个启动屏幕xib文件到你的项目:

配置您的项目使用启动屏幕xib文件而不是资产目录:

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"

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

多亏了@hannes-sverrisson的提示,我开始假设遗留应用在iPhone 6和iPhone 6 plus中使用320x568视图。

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

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

iPhone 5模拟器:http://i.stack.imgur.com/b2E5K.png iPhone 6模拟器:http://i.stack.imgur.com/4Qz8N.png iPhone 6 plus模拟器:http://i.stack.imgur.com/hQisc.png

在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)。这倾向于证实上面的理论,即缩放在宽度和高度上不是成比例的,而是使用像素/点的比率。

我希望这能有所帮助。

尽管我一般不喜欢约翰·格鲁伯的Daring Fireball博客的基调,但他的《更大的iPhone显示屏猜想》还是很值得一读的。

他猜对了,但两款机型的点分辨率和像素分辨率都是完全正确的,除了他(我也是)不希望苹果公司制造分辨率更小的物理显示器并缩小尺寸(详情见@Tommy的回答)。

这一切的要点是,我们应该停止从像素的角度思考,而开始从点的角度思考(这种情况已经存在了很长一段时间,这不是最近的发明)以及UI元素的物理大小。简而言之,这两款新iPhone在这方面都有所改进,因为在物理上,大多数元素都保持了相同的尺寸,你可以在屏幕上容纳更多元素(屏幕越大,你可以容纳更多元素)。

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