Xcode中的度量单位是什么?

23

这可能听起来很傻,但当我在Xcode中使用尺寸时,总框架大小等于320 * 568(宽度*高度)。我对此感到满意。但是电话的分辨率实际上是不同的。iPhone 4S是640 * 960,而5和后续的版本是640 * 1136。

我知道最后一个恰好是Xcode使用的单位的两倍,所以我的问题是:

  

XCode使用哪种测量单位?如果是像素,为什么不使用手机的尺寸/分辨率作为参考?


不知道我是否正确理解了您的问题,但我已经扩展了我的答案,以便更好地帮助您。 - The dude
我已经添加了正确答案。 - swift2geek
单位是“点”,而“像素”是通过“比例因子”从“点”转换而来的。 - holex
1
谢谢:P 但是我5年前就已经得到了答案^^ - Gil Sand
3个回答

30

它使用点。 在视网膜设备中,1个点等于4个像素。在非视网膜设备中,1个点等于1个像素。

查看苹果关于iOS绘图和打印的文档。 https://developer.apple.com/library/ios/documentation/2ddrawing/conceptual/drawingprintingios/GraphicsDrawingOverview/GraphicsDrawingOverview.html#//apple_ref/doc/uid/TP40010156-CH14-SW7

特别是“点与像素”部分。

编辑 回答你关于iPhone 4S与5以及下一代的问题。这些是实际的屏幕大小。分辨率不同。iPhone 4S和4的屏幕大小为320x480个点,或640x960个像素。iPhone 5、5C和5S的屏幕大小为320x568个点,或640x1136个像素。如果你正在使用xib,你可能会看到之前的尺寸,因为xib有一个定义的尺寸。这就是自动布局约束的用处。在xib或storyboard中告诉系统如何在屏幕上调整元素的大小/位置。你可能会使用struts和springs来决定如何在视图中重新定位项目,而不是自动布局。这很好。 即使你的xib / storyboard是iPhone5大小,如果在iPhone4/4S模拟器或设备上运行应用程序时检查屏幕的大小,在viewDidAppear方法中看到你的视图边界具有相应设备的大小。 使用点而不是像素更好,因为它帮助开发者抽象出分辨率。你不必关心一个点有多少像素,只需在屏幕上用点定位项目,让系统为你处理分辨率。


我读过关于点和像素的文章,这取决于PPP(每个像素的点数)比率,只有在使用72pi时,1个点才恰好等于1个像素(因为一个像素= 1/72点)。所以这就是为什么我一开始排除了这个答案。但我猜你的链接会让我更清楚地理解一切;-) - Gil Sand
关于点数和像素以及打印机点数,请参见我的答案,链接在这里:https://dev59.com/P17Va4cB1Zd3GeqPNMoc#8687316 - jrturton
为了完整起见,这是我在主题上提出的另一个问题。 - Bryan Hanson

11

Xcode 10.1, Swift 4.2答案

Xcode使用“points”作为计量单位。但是在下面的解释中,一个point等于多少个像素取决于你使用的是哪种视网膜设备。基本上,在非视网膜设备上,1pt=1px;而在iPhone 6 Plus及更高版本的“Plus”型号上,苹果(Apple)增加了3倍分辨率。 enter image description here

在普通的视网膜设备上,1pt=4px,而不是2px!然后苹果将这些像素打包成point。在iPhone Plus型号上,苹果还使用缩小因子1.15来进行降采样,这意味着例如,如果你有1242×2208,则应该除以1.15,这样你就可以在设备上获得1080×1920的全高清分辨率。 https://www.paintcodeapp.com/news/ultimate-guide-to-iphone-resolutions

enter image description here

我认为,最佳答案是:

它使用“points”作为计量单位。在视网膜设备上,1pt等于2个像素;在非视网膜设备上,1pt等于1个像素。

这个回答已经过时了。我提供了一个链接到developer.apple.com。

https://developer.apple.com/documentation/uikit/uiscreen/1617836-scale

enter image description here



网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接