drawRect导致慢滚动,即使它没有被调用

时间:2012-06-03 18:19:41

标签: iphone objective-c ios cocoa-touch drawrect

在我的应用程序中,我有一个包含大约20个子视图的scrollView。每个子视图都有一个drawRect方法,目前看起来像这样:

- (void)drawRect:(CGRect)rect
{
    NSLog(@"drawRect called");
}

当添加子视图时,会调用drawRect,但是当我滚动它时,即使没有再次调用drawRect,它也会很慢。

如果我删除了drawRect的实现,那么滚动是完全正常的。即使我无法摆脱慢滚动,有没有替代drawRect我可以使用?

2 个答案:

答案 0 :(得分:1)

如果只记录调用它,你为什么要调用drawRect?如果这只是你的目的,那就不要打电话了。事实上,我相信当你第一次创建一个继承自UIView的类,其中包含drawRect方法时,它会被注释掉并且在注释掉的drawRect方法之上,它会说“如果它不调用此方法”不会在屏幕上进行任何绘图,因为它占用了大量的内存“。基本上,不要在你的情况下调用它。

希望这有帮助。

答案 1 :(得分:0)

您可以尝试在视图首次出现之前将预先绘制的CGImages分配给每个自定义视图的CALayer的内容。这可能比使用drawRect自定义视图的外观更快。