我有一个自定义UIView,它是UITableViewCell的子视图。绘制单元格时,我的自定义视图也是如此,在我的UIView子类中正确调用drawRect :.重新加载单元格时,将正确绘制视图(调用drawRect:
)。
当某个事件发生时(例如计时器),我想重绘视图而不必重新加载整个单元格。 (这不是单元格中唯一的视图。)
但是,当我在子视图上调用setNeedsDisplay
时,没有任何反应。
我猜测当我的视图drawRect:
被调用时,生成的图像被缓存在某个地方的支持中,这样当我调用setNeedsDisplay
将支持重新绘制到屏幕上时,我的{{ 1}}呼叫永远不会再被调用。
为什么在创建单元格之后永远不会再调用drawRect:
?
编辑:单元格的子视图是从笔尖创建的。即:从笔尖加载UIViewController,并将其视图添加到UITableViewCell。
我从头开始使用自定义视图创建了一个测试用例,该视图未从nib(由代码创建)加载,并且按预期工作:drawRect:
会导致setNeedsDisplay
调用。它必须是在.xib文件中设置的东西,或者当它从笔尖加载时与视图不同的东西。
答案 0 :(得分:1)
我自己也遇到了同样的问题。对我而言,这是我的XIB的一个问题 - 我虽然是UIView的子类 - 所以相应地进行调整。我在IB中的错误是我将控件附加到“文件的所有者”而不是将它们附加到UIView。我敢肯定,在我缺乏经验的情况下会发生更大的事情 - 也许有经验的人可以详细说明。
希望有所帮助!