提问人:Steaphann 提问时间:6/7/2021 最后编辑:Steaphann 更新时间:6/8/2021 访问量:58
绘制的 NSS字符串在第二次 drawRect 调用后变得模糊
Drawed NSSstrings get fuzzy after the second drawRect call
问:
我有以下功能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 方法后,我的字符串变得模糊。
答:
1赞
outis
6/8/2021
#1
与 Objective-C 一样,无需显式删除绘制的元素。相反,调用 setNeedsDisplay(_:)
以使要重绘的区域失效,并且将调用 UIView 的方法来重绘字符串。UIView 文档的“视图绘制周期”部分对此进行了说明。draw(_:)
评论
0赞
Steaphann
6/8/2021
好的,所以字符串不会被绘制两次,我在问题中添加了一些屏幕截图,以更清楚地了解正在发生的事情。你知道是什么原因造成的吗?
1赞
outis
6/23/2021
@Steaphann:这是一个不同的问题,应该这样发布(在搜索现有问题之后),即使这是您最初试图询问的问题(这表明在问题中包含整个问题的价值,而不仅仅是具体尝试的解决方案)。
评论
times
setNeedsDisplay