我不确定这个功能是做什么或应该做什么。
void CGContextSetTextMatrix (
CGContextRef c,
CGAffineTransform t
);
The reference并非全部有用。 :(
设置当前文本矩阵。
文本矩阵指定从文本空间到用户空间的转换。为了生成用于在页面上实际绘制文本的最终文本渲染矩阵,Quartz将文本矩阵与当前变换矩阵和图形状态中的其他参数连接起来。
请注意,文本矩阵不是图形状态保存的一部分,或者恢复图形状态对文本矩阵没有影响。文本矩阵是图形上下文的属性,而不是当前字体的属性。"
你能解释一下吗?
答案 0 :(得分:3)
文本矩阵是一种应用于文本的特殊变换。您可以使用它来更改使用Core Text(或者在不推荐CGContextShowText
之前使用Core Graphics)绘制的文本的方向。在iOS上,Core Text和Core Graphics具有不同的坐标系。通常你可以通过flipping the Core Graphics coordinate system来解决这个问题,但是可以翻转文本矩阵,虽然除了非常简单的文本之外我不推荐它(它会混淆文本布局)。
(为什么?!?!?他问,他们会有不同的坐标系吗?好吧,因为当iPhoneOS出现时,Apple认为iPhone开发人员希望原点位于左上角,就像在Windows上一样,而不是数学家和Mac开发人员习惯使用左下角。所以他们翻转了坐标系,但是当他们从Mac移植到Core Text时,他们保留了它的坐标系,这对于我们所有拥有复杂文本布局代码的人来说非常好。我们可以很容易地移植,并且我确信它大大简化了移植,并且...好......原因。并不是说它与文本矩阵有关;它自10.0以来就存在,并且存在所以你可以旋转文本。)
由于文本矩阵没有为您初始化,因此最好在使用低级框架绘制文本之前始终初始化它。你初始化它是这样的:
CGContextSetTextMatrix(context, CGAffineTransformIdentity);
如果您使用UIKit绘制文本,这当然不是必需的。 UIKit将为您处理所有这些。