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

Do I really need drawRect() in custom UIView?

我是 iOS 的新手,正在尝试了解自定义 UIView 中 drawRect() 的用法,所以我有一个简单的自定义视图,我从 code.I 初始化它,例如想更新它的颜色我看到如下所示的两种方法。我应该使用哪一个?为什么?

//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;
 }

如果全部您想要做的是更改此视图或其某些子视图的背景颜色,您绝对应该不要误用drawRect: 为此。 drawRect: 用于在系统认为需要刷新时绘制视图(即其内容);它会在许多不可预知的时间被调用,您不需要它 - 您只需要根据需要更改背景颜色,视图的 功能 。同样,drawRect: 而不是 执行子视图管理的地方。

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