cod*_*boy 5 iphone text quartz-2d
在iOS中,必须将翻转变换应用于当前图形上下文,以便将文本定向为如图16-1所示.[翻转变换]涉及反转y轴并将原点平移到屏幕的底部.清单16-2显示了如何在
drawRect:iOS视图的方法中应用此类转换.然后,此方法调用MyDrawText清单16-1中的相同方法.
为什么?这看起来非常糟糕.
当我在这个答案中展开时,Quartz 2D坐标系使用左下角为(0,0),这与Mac上的窗口坐标系相同.iPhone使用左上角为(0,0)作为其视图布局,因此支持UIViews的图层的坐标系绕Y轴翻转.
如果您使用NSString UIKit扩展将文本绘制到UIView的后备层中,它将被正确定向,因为考虑了这种翻转.但是,如果使用较低级别的Quartz文本绘图,则需要首先围绕Y轴翻转坐标系(以便0,0再次是左下角)以正确定位.
普通核心图形上下文(用于绘制图像或PDF用于存储或显示)不会反转,因此情况正好相反.普通的Quartz文本将呈现正常,但使用NSString UIKit扩展绘制的东西需要首先反转坐标系.这会导致开发人员在绘制到屏幕时图像和文本看起来正确时会产生很多混淆,但在保存到磁盘时最终会颠倒.
至于为什么这样做,这是任何人的猜测.两种坐标系在某些情况下都有其优点.不过,这很容易纠正.
| 归档时间: |
|
| 查看次数: |
1183 次 |
| 最近记录: |