ios - CGContextConvertRectToDeviceSpace 在视网膜设备上是否正常工作?

标签 ios core-graphics core-text retina-display

我正在构建一个基于 iOS 的核心文本应用程序(iOS 5、iPad),并且有一个 View ,我在其中执行一些排版计算(在 drawRect 中)。

我注意到,当我使用 CGContextConvertRectToDeviceSpace 时,我在视网膜设备上获得的结果是非视网膜设备的两倍。据我了解,在 drawRect 中应用了一个隐式转换,它应该隐藏任何视网膜/非视网膜设备差异,所以我很困惑为什么我应该看到任何差异。

更具体地说,我正在尝试计算给定 CTLine 在用户空间坐标中的用户坐标位置。我首先将 CTLineGetTypographicBounds 用于我的行,并在 CGContextConvertRectToDeviceSpace 中使用这些值来获取一个矩形...但是我返回的矩形在视网膜设备上的宽度和高度是非视网膜设备的两倍。有什么我想念的吗?

最佳答案

I've noticed that when I use CGContextConvertRectToDeviceSpace, the result I get on a retina device is double that of a non-retina device.

对我来说听起来很正常。 “设备空间”表示输出设备上的实际像素,在本例中为视网膜显示器。它通常比 CGContext 的用户空间坐标系大 2 倍。

通常很少需要与设备空间相互转换——只有在绝对肯定需要将绘图与真实像素对齐时才会这样做。

您试图通过使用 CGContextConvertRectToDeviceSpace 来完成什么?可能有替代方案。

关于ios - CGContextConvertRectToDeviceSpace 在视网膜设备上是否正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10495142/

相关文章:

ios - 将核心绘图数据线和绘图符号蒙版到背景图像

swift - 如何获得 CFAttributedString 的 *real* 高度

iphone - 绘制下划线/删除线文本(多行字符串)?

iphone - iOS Quartz 在 pdf 中嵌入字体

iphone - 来自 CTFontRef 的字体名称

ios - 模拟器可以运行项目,但设备不能这样做

ios - 每个信标的唯一通知(超过 20 个信标)

ios - 我试图为我的应用程序实现启动画面,因为它需要从 api 将数据加载到应用程序中

ios - 如何在不丢失其缩放属性的情况下裁剪 UIImage?

iphone - 如何将本地 jpeg 或 png 图像文件加载到 iPhone 应用程序中?