我正在构建一个基于 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/