大橙子网站建设,新征程启航
为企业提供网站建设、域名注册、服务器等服务
最近应用需要自绘控件 但是在绘制view的时候遇到一个现象。这个现象也许能让大家绘制控件的时候调bug少一些时间。
目前成都创新互联公司已为千余家的企业提供了网站建设、域名、网页空间、网站托管维护、企业网站设计、农安网站维护等服务,公司将坚持客户导向、应用为本的策略,正道将秉承"和谐、参与、激情"的文化,与客户和合作伙伴齐心协力一起成长,共同发展。
如我有一个UIView,实现如下
- (void)drawRect:(CGRect)rect
{
CGContextRef context=UIGraphicsGetCurrentContext();
CGContextSetStrokeColorWithColor(context, [UIColoryellowColor].CGColor);
CGContextMoveToPoint(context,X1,Y1);
CGContextAddLineToPoint(context,X2,Y2);
CGContextStrokePath(context);
}
然后我把这个绘制的UIview给一个ViewController。代码如下
- (void)viewDidLoad
{
[superviewDidLoad];
x1=20;
y1=10;
x2=120;
y2=30;
TX *t=[[TX alloc] init];
// [t setBackgroundColor:[UIColor clearColor]];
[tsetBackgroundColor:nil];
self.view=t;
UIButton *bt=[[UIButtonalloc]initWithFrame:CGRectMake(0,0,100,35)];
bt.backgroundColor=[UIColoryellowColor];
[btaddTarget:selfaction:@selector(btAction:)forControlEvents:UIControlEventTouchUpInside];
[self.view addSubview:bt];
}
-(void)btAction:(id)sender{
x1+=20;
y1+=20;
x2+=30;
y2+=30;
TX *t=(TX *)[self view];
t->X1=x1;
t->Y1=y1;
t->X2=x2;
t->Y2=y2;
[tsetNeedsDisplay];
}
注意上面加红的两行代码。当[t setBackgroundColor:nil];或者不设置BackgroundColor时默认也是nil的。然后不停的按Button。效果如下
上面的图显示 重新绘制的时候没有清空前面绘制的。
但是当[t setBackgroundColor:[UIColor clearColor]];后不停按Button效果如下
如上图 重绘的时候会清除前面的绘图。所以有时候不一定要自己手动清空去 可能就是这点没注意。
(希望大神能解释这一现象的原因)。