在initWithCoder中没有调用drawLayer?

时间:2012-06-27 13:15:41

标签: ios uiview calayer initwithcoder

我正在尝试复制带有一些属性的UIView。 UIView正在覆盖drawLayer:方法来绘制自定义形状。

我正在使用NSKeyedArchiver,一个粘贴板和NSKeyedUnarchiver来取回属性。创建了UIView的一个实例并设置了属性 - 到目前为止一切都很好。

在drawlayer方法中创建了一些属性,这些属性具有默认值,而不是复制的属性。我的问题是当调用initWithCoder并创建一个实例时,是不是调用了drawRect或drawLayer?为什么呢?

1 个答案:

答案 0 :(得分:1)

当需要渲染或重新渲染内容时,需要(谨慎地)调用

drawLayer / drawRect。它可能在初始化期间没有被调用,因为没有必要。当视图进入屏幕并需要渲染时,应该稍后调用它。

另外,你说你在drawLayer中创建了一些属性?考虑将它们移到一些初始化方法中,并使绘图方法只关注绘图。