ios - 以编程方式将文本放入 UIView

标签 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

最佳答案

如果您认为确实有必要“删除”文本,我会获取文本的边界矩形,然后调用 CGContextClearRect 并填充背景色。如果您只是简单地“重绘”您的矩形,那可能是解决此问题的另一种方法。

以下是获取边界框以进行清除的方法:

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

希望这对您有所帮助!

关于ios - 以编程方式将文本放入 UIView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20770906/

相关文章:

ios - 试图理解#selector 及其方法所发生的事情需要参数 Swift 3

ios - AVPlayer - 播放音量非常低

android - [UIScreen mainScreen].bounds.size.width 的 Android 等效项是什么?

ios - UIScrollView 中 subview 的 touchEvent

ios - 对 block 内弱引用的强引用

ios - 从应用程序写入 csv,Cocoa 错误 513

javascript - 使用主屏幕图标会破坏 iPhone 上的设备高度

ios - 当应用程序从后台带到前台时如何制作 UIAlertView

iphone - 如何在 objective-c :Iphone中用%替换空格

objective-c - 从 NSInputStream 读取字符串数据是否存在字节顺序问题