0

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

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

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

4

1 回答 1

1

当需要渲染或重新渲染内容时,drawLayer/drawRect 会按需(谨慎地)调用。它可能在初始化期间没有被调用,因为没有必要。当视图进入屏幕并需要渲染时,应该稍后调用它。

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

于 2012-06-27T13:37:34.987 回答