iphone – 处理drawRect多次调用

我发现我的drawRect不止一次被调用.不幸的是,这会产生双重绘制所有内容的不幸副作用,因为我的所有子视图都是在drawRect中绘制的(我是严格的atheist w.r.t. Interface Builder).

处理多次调用的最佳方法是什么?检查是否再次调用的标志?或清除整个视图并从头开始重绘(正如我所做的那样?)

最佳答案 “你的子视图是用drawRect绘制的”是什么意思?如果你的意思是你在drawRect中调用-addSubview:那就不要.将它们移动到一个更合适的位置,只有在需要时才会被调用(如果子视图始终存在,可能是视图的-initWithFrame:方法),并仅使用drawRect进行自定义绘制.

严格来说,多次调用是-drawRect的全部内容.它被称为在需要时更新视图的小部分.如果您正在更新视图(移动它,更新超视图等),它实际上经常被调用,所以它应该尽可能简单快速以避免性能问题.

点赞