我在xcode中为屏幕上的某个位置设置了动画。
目前它每0.1秒以“1”像素移动。
这意味着它不会在视网膜显示屏上每隔0.1秒移动1个像素,而是每0.1秒移动2个像素。
我希望它在视网膜显示屏上每0.1秒移动一次真实的像素。有没有办法做到这一点?
是否可以将对象位置设置为视网膜位置?
答案 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
像素)。