将iPhone4的UIView更新为ScaleActor 2.0

将iPhone4的UIView更新为ScaleActor 2.0,uiview,scale,iphone-4,high-resolution,Uiview,Scale,Iphone 4,High Resolution,我有一个程序在我的iPhone4上运行得很好。它使用我创建的UIView类(称为TestView)来使用Quartz绘制图形(非常简单的图形,例如一些CG线和圆)。然而,我需要利用iPhone4上新的更高分辨率屏幕。目前,确保与iPhone3向后兼容,在代码中移动一个“点”会导致iPhone4屏幕上移动2个像素。通过将UIView更新为2.0的比例因子,您可以更改从逻辑坐标空间到像素空间的映射,以利用iPhone 4的更高分辨率。这应该很容易;我只是找不到任何关于如何更改UIView比例因子的文

我有一个程序在我的iPhone4上运行得很好。它使用我创建的UIView类(称为TestView)来使用Quartz绘制图形(非常简单的图形,例如一些CG线和圆)。然而,我需要利用iPhone4上新的更高分辨率屏幕。目前,确保与iPhone3向后兼容,在代码中移动一个“点”会导致iPhone4屏幕上移动2个像素。通过将UIView更新为2.0的比例因子,您可以更改从逻辑坐标空间到像素空间的映射,以利用iPhone 4的更高分辨率。这应该很容易;我只是找不到任何关于如何更改UIView比例因子的文档

例如,我绘制的任何线条,应该由函数CGContextSetLineWidth(context,1.0)指定; 最后画了一条2像素宽的线。我需要改变这一点,以实际绘制一个像素宽

我在苹果支持高分辨率屏幕的解释中找到了一些解释,但没有改变比例因子的示例或方法:

UIView文档提供了contentScaleFactor属性,但没有“set”方法。将下面的行从ttp://更改为http://以转换为URL:


ttp://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIView_Class/UIView/UIView.html#//apple_ref/occ/cl/UIView

好的,所以iPhone4足够好,可以让它的所有UI视图自动达到比例因子2。更根本的问题是CG以一种不寻常的方式渲染线条(据我所知)。如果将线宽设为1.0/contentScaleFactor(iPhone 4为0.5),并上下(或左右)笔直地画一条线,一半的时间它将是一条完美的、明亮的线,宽度为一个像素。但另一半时间,它会将其渲染为两个像素宽的线条,两条像素线的亮度都只有一半。这在复杂的环境下看起来不错,尤其是涉及运动的环境,但是如果你只是检查一行,那就很烦人了


对于一条直线来说,解决这个问题的一个方法是将坐标“抖动”半个值。因此,如果要从(0,0)绘制到(0,10)并获得“双宽度”线,请尝试从(0.5,0)绘制到(0.5,10)

好的,那么iPhone4已经足够好了,可以让它的所有UI视图自动达到比例因子2。更根本的问题是CG以一种不寻常的方式渲染线条(据我所知)。如果将线宽设为1.0/contentScaleFactor(iPhone 4为0.5),并上下(或左右)笔直地画一条线,一半的时间它将是一条完美的、明亮的线,宽度为一个像素。但另一半时间,它会将其渲染为两个像素宽的线条,两条像素线的亮度都只有一半。这在复杂的环境下看起来不错,尤其是涉及运动的环境,但是如果你只是检查一行,那就很烦人了

对于一条直线来说,解决这个问题的一个方法是将坐标“抖动”半个值。因此,如果要从(0,0)绘制到(0,10)并获得“双宽度”线,请尝试从(0.5,0)绘制到(0.5,10)