1

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

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

我在 Apple 对支持高分辨率屏幕的解释中找到了解释,但没有更改比例因子的示例或方法:

http://developer.apple.com/iphone/library/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/SupportingResolutionIndependence/SupportingResolutionIndependence.html#//apple_ref/doc/uid/TP40007072-CH10-SW12

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

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

4

1 回答 1

1

好的,所以 iPhone 4 足以让它的所有 UIViews 自动按比例因子 2。更根本的问题是 CG 以一种不寻常的方式渲染线条(据我所知)。如果您将线宽设为 1.0/contentScaleFactor(即 iPhone 4 为 0.5),并向上和向下(或从一侧到另一侧)直线绘制一条线,一半的时间它将是一条完美、明亮的宽度为 1 的线像素。但在另一半时间,它将其渲染为宽度为两个像素的线,两条像素线都只有一半亮。这在复杂的环境中看起来不错,尤其是涉及运动的情况下,但如果你只是检查一条线,那就很烦人了。

为单行解决此问题的一种方法是将坐标“摇动”半个值。因此,如果您从 (0,0) 到 (0,10) 绘制并获得“双宽”线,请尝试从 (0.5, 0) 到 (0.5, 10) 绘制。

于 2010-07-23T15:20:23.307 回答