【问题标题】:Put text in UIView programmatically以编程方式将文本放入 UIView
【发布时间】:2013-12-25 08:51:58
【问题描述】:

在我的应用程序中,我使用 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 填充它吗?这是当前擦除前的样子:

擦除后:

【问题讨论】:

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


    【解决方案1】:

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

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

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

    希望这会有所帮助!

    【讨论】:

    • 如何获得文本的边界矩形?文本存储在字典中,我只是在绘制它,我没有将它作为对象?如果你能更具体一点,我会接受你的回答!
    • 我已经更新了关于如何获取边界矩形的答案。如果您对我的回答有任何其他问题,请告诉我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-04
    • 2017-03-17
    • 2011-10-27
    • 2012-11-04
    相关资源
    最近更新 更多