过去我总是看到调用的属性position
和属性positionInPixels
是一样的。这一次position * 2 == positionInPixels
。谁能告诉我这两个属性之间有什么区别,或者它们的价值何时会不同?
3 回答
position
以点positionInPixels
为单位,以像素为单位。在非视网膜设备上 1 点 = 1 像素。在 iPhone 4/4S 和 New iPad 等 Retina 设备上,1 点 = 2 像素。
根据iOS 人机界面指南:
注意:像素是讨论设备屏幕大小或您在图像编辑应用程序中创建的图标大小时使用的适当测量单位。点是讨论在屏幕上绘制的区域大小时使用的适当测量单位。
在标准分辨率的设备屏幕上,一个点等于一个像素,但其他分辨率可能会规定不同的关系。例如,在 Retina 显示器上,一个点等于两个像素。
有关此概念的完整讨论,请参阅iOS 的View Programming Guide中的“Points Versus Pixels” 。
position
以点为单位提供位置,而positionInPixels
以像素为单位提供位置。例如,在 iPhone 4 上,位置范围可以从 (0,0) 到 (320, 480)(在纵向模式下);positionInPixels 的范围可以从 (0,0) 到 (640, 960) 以反映其视网膜显示的更高分辨率。
基本上,它们在视网膜显示设备上是不同的;它们在非视网膜显示设备上是相同的。
希望这可以帮助...
当您使用 Retina 显示器时,您的画布仍由 320x480 点组成,但每个点由 2 个像素组成。在标准显示器中,每个点是一个像素。这就是为什么视网膜显示更详细的原因,因为可以在纹理中使用更多的像素数据。所以以像素为单位的位置是指特定像素上的位置。(即点 0 可以是高视网膜显示器中的像素 0 或像素 1)