Apple的网站声称分辨率为1080p:1920 x 1080
然而,Xcode(今天推出的8.0 GM)所需的启动屏幕是2208 x 1242。
谁是对的?
答案 0 :(得分:308)
iPhone 6+在内部使用 @ 3x 资源以 2208×1242 ( 736x414 点)的虚拟分辨率进行渲染,然后采样那显示下来。与在Retina MacBook上使用缩放分辨率相同 - 它可以让它们达到像素资产的整数倍,同时仍具有12磅文字在屏幕上看起来大小相同。
所以,是的,启动屏幕需要那么大。
6英寸,5英尺,5英尺,4英尺和4英寸都是每英寸326像素,并使用@ 2x资产来保持所有以前设备每英寸约160点。
6+是每英寸401像素。所以它假设需要大约2.46倍的资产。相反,Apple使用@ 3x资产并将整个输出缩小到其自然尺寸的约84%。
在实践中,Apple决定更多地使用87%,将1080转为1242.毫无疑问,这是为了找到尽可能接近84%的东西,仍然可以在两个方向上产生整体尺寸 - 1242/1080 = 2208 / 1920确切地说,如果你把1080转换成1286,那么你需要垂直渲染2286.22像素才能很好地扩展。
答案 1 :(得分:113)
答案是较旧的应用程序以2208 x 1242 Zoomed模式运行。但是,当为新手机构建应用程序时,可用的分辨率为:超级视网膜HD 5.8(iPhone X)1125 x 2436(458ppi), Retina HD 5.5 ( iPhone 6,7,8 Plus ) 1242 x 2208 和 Retina HD 4.7 ( iPhone 6 ) 750 x 1334 即可。这引起了问题中提到的混淆。要构建使用新手机全屏尺寸的应用,请添加尺寸为1125 x 2436,1242 x 2208,2208 x 1242和750 x 1334的LaunchImages。
iPhone X Max 的尺寸 @ 3x 缩放(Apple名称: Super Retina HD 6.5显示屏),坐标空间: 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“显示),坐标空间: 414 x 896 点和 828 x 1792 像素,326 ppi,设备物理尺寸为2.98 x 5.94 in或75.7 x 150.9 mm。
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 X 和 iPhone X 的尺寸 @ 3x 缩放(Apple名称: Super Retina HD 5.8“显示),坐标空间: 375 x 812 点和 1125 x 2436 像素,458 ppi,设备物理尺寸为2.79 x 5.65 in或70.9 x 143.6 mm。
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毫米。在Zoomed模式下运行时,即没有新的LaunchImages或在iPhone 6 Plus的安装程序中选择,原生标度为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 6 的尺寸和 iPhone 6S ,尺寸为@ 2x(Apple名称: Retina HD 4.7 ),坐标空间: 375 x 667 点和 750 x 1334 像素,326 ppi,屏幕物理尺寸为2.3 x 4.1 in或 58 x 104 mm 。在Zoomed模式下运行时,即没有新的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,否则应用程序将在Zoomed模式下运行,并且不会显示正确的缩放比例或屏幕尺寸。在缩放模式下,nativeScale
和scale
将不同。在实际设备上,iPhone 6 Plus上的比例可以是2.608,即使它没有在Zoomed模式下运行,但在模拟器上运行时会显示3.0的比例。
答案 2 :(得分:96)
真实/物理iPhone 6 Plus分辨率为1920x1080,但在Xcode中,您的界面为2208x1242分辨率(736x414点),在设备上,它会自动缩小到1920x1080像素。
iPhone分辨率快速参考:
Device Points Pixels Scale Physical Pixels Physical PPI Size
iPhone X 812x375 2436x1125 3x 2436x1125 458 5.8"
iPhone 6 Plus 736x414 2208x1242 3x 1920x1080 401 5.5"
iPhone 6 667x375 1334x750 2x 1334x750 326 4.7"
iPhone 5 568x320 1136x640 2x 1136x640 326 4.0"
iPhone 4 480x320 960x640 2x 960x640 326 3.5"
iPhone 3GS 480x320 480x320 1x 480x320 163 3.5"
答案 3 :(得分:46)
您可能应该停止在iOS 8中使用启动图像并使用storyboard或nib / xib。
在 Xcode 6 中,打开File
菜单,然后选择New
⟶File...
⟶iOS
⟶User Interface
⟶Launch Screen
。
然后点击它打开项目的设置。
在General
标签的App Icons and Launch Images
部分,将Launch Screen File
设置为您刚创建的文件(这将在{{UILaunchStoryboardName
中设置info.plist
1}})。
请注意,目前模拟器只会显示黑屏,因此您需要在真实设备上进行测试。
将启动屏幕xib文件添加到项目中:
将项目配置为使用Launch Screen xib文件而不是资产目录:
答案 4 :(得分:24)
在物理设备上,iPhone 6 Plus的主屏幕界限为 2208x1242 ,nativeBounds为 1920x1080 。需要硬件缩放才能调整大小以适应物理显示。
在模拟器上,iPhone 6 Plus的主屏幕界限和nativeBounds均为2208x1242。
换句话说......基于CALayers
处理像素的视频,OpenGL和其他内容将处理真正的 1920x1080 帧缓冲区设备(或SIM上的 2208x1242 )。处理UIKit
中的点的事情将处理 2208x1242 (x3)边界,并在设备上进行适当缩放。
模拟器无法访问在设备上进行扩展的相同硬件,并且在软件中模拟它并没有太大的好处,因为它们产生的结果与硬件不同。因此,将模拟设备主屏幕的nativeBounds
设置为物理设备主屏幕的边界是有意义的。
iOS 8向UIScreen
nativeScale
和nativeBounds
添加了API,让开发人员确定与CADisplay
对应的UIScreen
的分辨率。< / p>
答案 5 :(得分:13)
对于那些想知道如何处理遗留应用程序的人,我对这个主题进行了一些测试和计算。
感谢@ hannes-sverrisson提示,我开始假设在iPhone 6和iPhone 6 plus中使用320x568视图处理遗留应用程序。
测试是使用带有白色边框的简单黑色背景bg@2x.png
进行的。背景的大小为640x1136像素,黑色,内部白色边框为1像素。
以下是模拟器提供的屏幕截图:
在iPhone 6屏幕截图中,我们可以看到白色边框顶部和底部有1个像素边距,iPhone 6加上屏幕截图有2个像素边距。这为我们在iPhone 6 plus上提供了使用空间1242x2204,而不是iPhone 6上的1242x2208和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)。这往往证实了上述理论,即缩放在宽度和高度上不成比例,但使用像素/点比率。
我希望这会有所帮助。
答案 6 :(得分:12)
查看此信息图:http://www.paintcodeapp.com/news/iphone-6-screens-demystified
它解释了旧款iPhone,iPhone 6和iPhone 6 Plus之间的差异。您可以看到屏幕尺寸与点,渲染像素和物理像素的比较。您还可以在那里找到答案:
iPhone 6 Plus - 带Retina显示屏HD。缩放因子为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
答案 7 :(得分:4)
即使我不喜欢John Gruber的Daring Fireball博客的语气,他的Larger iPhone Display Conjecture也值得一读。
他猜测但两个模型的分辨率和点数都是完全正确,除了他没有(我也没有)期望Apple建立一个更小的分辨率物理显示器并缩小(详情请见@ Tommy的答案。
这一切的要点是,人们应该停止以像素为单位进行思考,并开始根据点数进行思考(这种情况已经存在很长时间了,它不是最近的发明)以及由此产生的物理尺寸的UI元素。简而言之,这两款新款iPhone都在这方面有所改进,因为大多数元素保持相同的尺寸,你可以在屏幕上放置更多的元素(对于每个更大的屏幕,你可以更适合)。
我只是有点失望,他们没有将内部分辨率映射到更大型号的实际屏幕分辨率1:1。