【问题标题】:Drawed NSSstrings get fuzzy after the second drawRect call在第二次 drawRect 调用后绘制的 NSSstrings 变得模糊
【发布时间】:2021-08-24 09:26:30
【问题描述】:

我有以下draw(_ rect: CGRect)函数

 override public func draw(_ rect: CGRect) {
        super.draw(rect)
     
        for (i, time) in times.enumerated() {
            let fontSize = style.font.pointSize
            let timeRect = CGRect(x: 2, y: y,
                                  width: style.leftInset, height: fontSize)
            let timeString = NSString(string: time)
            timeString.draw(in: timeRect, withAttributes: attributes)
            
        }
    }

在某些情况下,我想从 UIView 中删除所有以前绘制的 NSString 对象并重新绘制。但似乎没有 API 可以做到这一点?

谁能帮忙?

更新

当调用 setNeedsDisplay 时,UIView 会删除它之前的所有绘图。但是由于某种原因,在我第二次调用 drawRect 方法之后,我的字符串变得模糊了。

之前

之后

【问题讨论】:

标签: ios swift iphone uiview


【解决方案1】:

作为with Objective-C,无需显式删除绘制的元素。相反,调用setNeedsDisplay(_:) 使您要重绘的区域无效,并且您的UIView 的draw(_:) 方法将被调用以重绘字符串。 UIView 文档的“View Drawing Cycle”部分对此进行了说明。

【讨论】:

  • 好的,所以字符串不会被绘制两次,我在我的问题中添加了一些屏幕截图,以便更清楚地了解正在发生的事情。你知道是什么原因造成的吗?
  • @Steaphann:这是一个不同的问题,应该这样发布(在搜索现有问题之后),即使这是您最初试图询问的问题(这表明包括整体的价值)问题中的问题,而不仅仅是具体的尝试解决方案)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多