Iphone 自定义UIView图形构件

Iphone 自定义UIView图形构件,iphone,ios,uiview,custom-controls,Iphone,Ios,Uiview,Custom Controls,我有以下问题: 我做了两个自定义视图。第一个是用作容器的气泡视图,它使用drawRect和CGContext方法来绘制自身。第二个是作为UILabel子类的文本视图,用于显示NSAttributedString(需要iOS5)。此文本视图 使用UILabel drawTextInRect:的指定子类方法 文本视图通过addSubview添加到气泡视图中。 它们都使用透明UIColor(clearColor)作为背景。现在,为了优化性能,我想将前一种清晰的背景色设置为白色 突然出现了可见的视觉伪影

我有以下问题:

我做了两个自定义视图。第一个是用作容器的气泡视图,它使用drawRect和CGContext方法来绘制自身。第二个是作为UILabel子类的文本视图,用于显示NSAttributedString(需要iOS5)。此文本视图 使用UILabel drawTextInRect:的指定子类方法

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


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

正如你所看到的,有 -红色矩形“Lorem”,蓝色矩形“Lorem ipsum等”和绿色矩形 “ipsum dolor”很好。它们是当前的位置和大小 我的文本视图 -红色的“Lorem”下面有一个蓝色和红色的矩形。它们是视觉的 人工制品当我初始化自定义设置时,它们正好位于起始矩形上 带有initFrame的文本视图

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


重新绘制的原因是什么?如何修复?

“突然出现可见的视觉瑕疵”——比如什么?在你添加红色和蓝色背景之前,让我们看看它是什么样子。红色和蓝色矩形应该在哪里?你还没说过。我不认为在这里将UILabel子类化是个好主意。为什么这是必要的?它可能会给你带来问题。如果您发布一些代码,我们将有更多的机会来帮助您。@occulus:有必要将UILabel子类化,因为我们需要支持iOS 5并绘制NSAttribute字符串。UILabel没有问题,因为它支持带有drawTextInRect:的文本绘图。