4

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

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

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

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

4

2 回答 2

1

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

希望这可以帮助。

于 2012-06-03T18:32:31.957 回答
0

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

于 2012-06-04T01:37:41.883 回答