【发布时间】:2009-05-17 18:02:50
【问题描述】:
我在自定义表格单元格中有一个自定义视图。每次更改自定义视图上的特定属性时,我都会调用[self setNeedsDisplay],它会在- (void)drawRect:(CGRect)rect 中重绘视图。该属性在表视图委托的tableView:cellForRowAtIndexPath: 中设置。但是当表格视图大于屏幕并且必须重复使用单元格时,drawRect 并不是每次都调用setNeedsDisplay。尤其是当我快速轻弹桌子的时候。慢速滚动效果很好。这导致第一个和最后一个单元格中的信息经常不正确。
在日志中我可以看到通常情况下,每次调用setNeedsDisplay 都会调用drawRect,但是当我快速滚动表格视图时,调用setNeedsDisplay 的次数比调用drawRect 的次数要多。当然这里应该是一对一的比例。
我在普通 UIView 中使用相同的自定义视图,每次调用 setNeedsDisplay 时它都会完美重绘。这个问题似乎与表格视图和重用单元格无关。
有人知道这里发生了什么吗? 有没有其他方法可以强制自定义视图重绘自身?
【问题讨论】:
标签: iphone cocoa-touch