1

我已经在 iOS 下主要使用 [NSString drawAtPoint] 创建了一些 PDF。

我的问题是:如何绘制线条和矩形?
以及如何绘制灰色框/框架作为背景层以在其中包含文本?

编辑:好的,我发现了一些关于绘制矩形的东西:renderInContext。尽管如此,这段代码: UILabel *lbl = [[UILabel alloc] initWithFrame:CGRectMake(100, 240, 300, 150)];
[lbl setBackgroundColor:[UIColor redColor]];
[[lbl layer] renderInContext:currentContext];

正在以正确的宽度/高度绘制 UILabel 但在错误的原点 (0, 0)!
知道为什么吗?

4

2 回答 2

1

简短的回答是:因为这就是renderInContext:工作原理——它在当前上下文中的上下文当前位置(默认为 (0,0))绘制你的层(-tree)。)

如果您根据下表中的图形上下文来考虑,并且您在桌子上有一块固定的、不可移动的带有 [方形] 切口的纸板,然后您在切口中绘制,您想要做的就是移动下面的表(上下文),以便在所需的位置绘制。

你用CGContextTranslateCTM. 因此,对于您上面的标签,代码将如下所示:

(警告:在浏览器中输入的代码,未检查是否完全准确。)

CGContextTranslateCTM(ctx, -100, -240);  // Note how you're moving /negative/ because you're moving the table, not the cardboard.
[[lbl layer] renderInContext:currentContext];

祝你好运!

于 2014-07-07T17:40:38.020 回答