将对象放置在标准分辨率无法访问的视网膜像素位置?

时间:2013-11-18 23:54:38

标签: ios iphone retina-display

我在xcode中为屏幕上的某个位置设置了动画。

目前它每0.1秒以“1”像素移动。

这意味着它不会在视网膜显示屏上每隔0.1秒移动1个像素,而是每0.1秒移动2个像素。

我希望它在视网膜显示屏上每0.1秒移动一次真实的像素。有没有办法做到这一点?

是否可以将对象位置设置为视网膜位置?

2 个答案:

答案 0 :(得分:4)

您想要以像素为单位移动。 iOS中的所有坐标都以磅为单位给出。所以你需要将你的点转换为像素。这可以通过以下方式完成:

CGFloat screenScale = [UIScreen mainScreen].scale;
CGFloat ratio = 1.0 / screenScale;

使用ratio增加动画效果。

在非视网膜设备上,ratio将为1点。在当前的视网膜设备上,ratio将为0.5点。

在制作动画时,将x和y坐标移动ratio个点,每次都会得到一个移动像素。

答案 1 :(得分:2)

从iOS 4开始,尺寸以“点”而不是像素来衡量。在非Retina屏幕中,一个点是一个像素,在Retina屏幕中,一个点是两个像素,绘制一个点线,它显示两个像素宽。

因此,在Retina屏幕上,您可以移动0.5点(等于1像素)。

enter image description here

查看Apple's drawing concepts