我真的需要自定义UIView中的drawRect()吗?

时间:2015-06-04 02:29:14

标签: ios uiview drawrect

我是iOS的新手并试图理解自定义UIViews中drawRect()的用法,所以我有一个简单的自定义视图,我从代码初始化。我想更新它的颜色,我看到两种方法,如下所示。我应该使用哪一个?为什么?

//VController
CustomView *cv = [[CustomView alloc] initWithFrame:...]
...
[cv updateColors];

//CustomView
-(id) initWithFrame {}
-(id) initWithCoder  {}
-(void) updateColors(UIColor *color){  ----(1)
  ...Draw here with new color ...
   view1.backgroundColor = color;
   view2.backgroundColor = color;

 }
- (void) drawRect{
 ... draw here with new color ... ---------(2)
   view1.backgroundColor = color;
   view2.backgroundColor = color;
 }

1 个答案:

答案 0 :(得分:3)

如果所有你要做的是更改此视图或其某些子视图的背景颜色,那么你绝对应该误用drawRect:。当系统认为需要刷新时,drawRect:用于绘制视图(即其内容);它在许多不可预测的时间被调用,你不需要它 - 你只需要根据需要改变视图的背景颜色,特征。同样地,drawRect: 是执行子视图管理的地方。

但是如果你 要绘制视图的内容(例如视图显示一个圆圈,你需要绘制该圆圈来描绘视图)那么你必须使用drawRect:为此;它是唯一的地方,视图有机会自我绘制。