0

我有以下问题:

我制作了两个自定义 UIView。第一个是用作容器的气泡视图,它使用带有 CGContext 方法的 drawRect 来绘制自身。第二个是文本视图,它是 UILabel 的子类,用于显示 NSAttributedStrings(需要 iOS 5)。这个文本视图使用了 UILabel drawTextInRect: 的指定子类方法。

使用 addSubview 将文本视图添加到气泡视图中。他们都使用透明的 UIColor (clearColor) 作为背景。现在为了性能优化,我想将以前的清晰背景颜色设置为白色。

突然间出现了可见的视觉伪影。为了更好地调试,我现在将背景颜色设置为红色和蓝色:

问题

如您所见,有一个红色矩形“Lorem”,一个蓝色矩形“Lorem ipsum 等”。和一个绿色矩形“ipsum dolor”,它们都很好。它们是我的文本视图的当前位置和大小 - 红色“Lorem”下方有一个蓝色和红色矩形。它们是视觉工件。当我用 initFrame 初始化我的自定义文本视图时,它们正好在起始矩形上。

我确实使用 setFrame: 将标签的框架移动到了正确的位置。仍然绘制以前的标签矩形,但为什么呢?[self setNeedsDisplay] 和 [self setNeedsLayout] 都没有效果。

重绘的原因是什么,我该如何解决?

4

0 回答 0