更新UIView到iPhone4的ScaleFactor 2.0
我有一个程序在我的iPhone 4上运行得非常漂亮。它使用我创建的一个类UIView(称为TestView)使用Quartz绘制图形(非常简单的图形,例如几条CG线和界)。但是,我需要利用iPhone 4上的新高分辨率屏幕。目前,确保向后兼容iPhone 3,通过代码中的单个“点”移动,导致iPhone 4屏幕上移动2个像素。通过将UIView更新为2.0的比例因子,您可以更改从逻辑坐标空间到像素空间的映射,以充分利用iPhone 4的更高分辨率。应该很容易;我只是找不到有关如何更改UIView比例因子的任何文档。例如,我绘制的任何线条,应该由函数CGContextSetLineWidth(context,1.0)指定; 最终画出一条2像素宽的线。我需要改变它实际上画一个像素宽。更新UIView到iPhone4的ScaleFactor 2.0
我找解释,但没有例子或方法改变规模因素的支持高分辨率屏幕苹果的解释:
UIView的文档提供了一个contentScaleFactor属性,但没有“设置”方法。将以下行从ttp://更改为http://以变为网址:
ttp://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIView_Class/UIView/UIView.html #// apple_ref/occ/cl/UIView
好的,所以iPhone 4足以让所有的UIViews自动缩放比例因子2.更深层次的问题是CG以不同寻常的方式渲染线条据我所知)。如果您将线宽设置为1.0/contentScaleFactor(即iPhone 4的0.5),并且上下画一条直线(或直线到另一侧),则一半时间它将成为宽度为1的完美亮线像素。但是另一半时间,它把这个作为一条宽度为两个像素的线,两条像素线都只有一半点亮。这在复杂的环境中看起来不错,特别是涉及到移动的环境,但如果你只是检查一条线,这是非常烦人的。
解决这个问题的方法是用一个数值“摆动”坐标。因此,如果您从(0,0)到(0,10)绘制并获得“双倍宽度”线,请尝试从(0.5,0)到(0.5,10)进行绘制。