【问题标题】:Update UIView to ScaleFactor 2.0 for the iPhone4将 iPhone 4 的 UIView 更新为 Scale Factor 2.0
【发布时间】:2011-03-19 15:38:46
【问题描述】:

我有一个在我的 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 属性,但没有“set”方法。将下面的行从 ttp:// 更改为 http:// 以变成 URL:

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

【问题讨论】:

    标签: uiview scale iphone-4 high-resolution


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 2020-01-29
      • 2011-11-01
      • 1970-01-01
      • 2011-03-08
      • 1970-01-01
      相关资源
      最近更新 更多