以编程方式将文本放在UIView中

时间:2013-12-25 08:51:58

标签: ios objective-c cocoa-touch drawrect quartz-2d

在我的应用程序中,我使用drawRect在UIImage中绘制一些文本。它在多个地方写了多个东西..后来,我尝试使用

删除一些文本
CGContextSetBlendMode(context, kCGBlendModeClear);

CGPoint daPoint = CGPointMake(second.x + 20, second.y + 20);

NSDictionary *textAttributes = @{ NSFontAttributeName: [UIFont boldSystemFontOfSize:25.0],
                                                  NSForegroundColorAttributeName:   [UIColor clearColor] };

[textString drawAtPoint:daPoint withAttributes:textAttributes];

这几乎完美无缺,除了文字留下一个小的笔划。我使用相同的代码来绘制文本,就像我要擦除一样,除非我在绘图时使用kCGBlendModeNormal。我怎么能完全摆脱它?我可以画一个盒子并使用kCGBlendModeClear填充它吗?这就是目前在擦除之前的样子:

enter image description here

擦除后:

enter image description here

1 个答案:

答案 0 :(得分:2)

我会得到文本的边界矩形,然后调用CGContextClearRect,然后填写背景颜色,如果你认为真正需要“删除”文本。如果你只是“重绘”你的矩形,这可能是解决这个问题的另一种方法。

以下是如何获取清除的边界框:

CGSize textSize = [textString sizeWithAttributes:textAttributes];
CGRect textFrame = CGRectMake(daPoint.x, daPoint.y, textSize.width, textSize.height);

希望这有帮助!