最近應(yīng)用需要自繪控件 但是在繪制view的時(shí)候遇到一個(gè)現(xiàn)象。這個(gè)現(xiàn)象也許能讓大家繪制控件的時(shí)候調(diào)bug少一些時(shí)間。
目前成都創(chuàng)新互聯(lián)公司已為千余家的企業(yè)提供了網(wǎng)站建設(shè)、域名、網(wǎng)頁空間、網(wǎng)站托管維護(hù)、企業(yè)網(wǎng)站設(shè)計(jì)、農(nóng)安網(wǎng)站維護(hù)等服務(wù),公司將堅(jiān)持客戶導(dǎo)向、應(yīng)用為本的策略,正道將秉承"和諧、參與、激情"的文化,與客戶和合作伙伴齊心協(xié)力一起成長(zhǎng),共同發(fā)展。
如我有一個(gè)UIView,實(shí)現(xiàn)如下
- (void)drawRect:(CGRect)rect
{
CGContextRef context=UIGraphicsGetCurrentContext();
CGContextSetStrokeColorWithColor(context, [UIColoryellowColor].CGColor);
CGContextMoveToPoint(context,X1,Y1);
CGContextAddLineToPoint(context,X2,Y2);
CGContextStrokePath(context);
}
然后我把這個(gè)繪制的UIview給一個(gè)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];
}
注意上面加紅的兩行代碼。當(dāng)[t setBackgroundColor:nil];或者不設(shè)置BackgroundColor時(shí)默認(rèn)也是nil的。然后不停的按Button。效果如下
上面的圖顯示 重新繪制的時(shí)候沒有清空前面繪制的。
但是當(dāng)[t setBackgroundColor:[UIColor clearColor]];后不停按Button效果如下
如上圖 重繪的時(shí)候會(huì)清除前面的繪圖。所以有時(shí)候不一定要自己手動(dòng)清空去 可能就是這點(diǎn)沒注意。
(希望大神能解釋這一現(xiàn)象的原因)。