繁体   English   中英

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

[英]Do I really need drawRect() in custom UIView?

我是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;
 }

如果想要做的是改变这种看法或一些子视图的背景颜色,你绝对应该滥用drawRect:此。 drawRect:用于当系统认为需要刷新时想要绘制视图(即其内容); 它在许多不可预测的时间被调用,你不需要它 - 你只需要根据需要改变背景颜色,即视图的一个特征 类似地, drawRect: 不是执行子视图管理的地方。

但是,如果你绘制视图的内容(例如视图中显示一个圆圈,你需要绘制圆圈描绘的观点),那么你必须使用drawRect:是什么; 它是视图有机会吸引自己的唯一场所。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM