您好,登錄后才能下訂單哦!
最近應(yīng)用需要自繪控件 但是在繪制view的時(shí)候遇到一個(gè)現(xiàn)象。這個(gè)現(xiàn)象也許能讓大家繪制控件的時(shí)候調(diào)bug少一些時(shí)間。
如我有一個(gè)UIView,實(shí)現(xiàn)如下
- (void)drawRect:(CGRect)rect
{
CGContextRef context=UIGraphicsGetCurrentContext();
CGContextSetStrokeColorWithColor(context, [UIColor yellowColor].CGColor);
CGContextMoveToPoint(context, X1, Y1);
CGContextAddLineToPoint(context, X2, Y2);
CGContextStrokePath(context);
}
然后我把這個(gè)繪制的UIview給一個(gè)ViewController。代碼如下
- (void)viewDidLoad
{
[super viewDidLoad];
x1=20;
y1=10;
x2=120;
y2=30;
TX *t=[[TX alloc] init];
// [t setBackgroundColor:[UIColor clearColor]];
[t setBackgroundColor:nil];
self.view=t;
UIButton *bt=[[UIButton alloc] initWithFrame:CGRectMake(0, 0, 100, 35)];
bt.backgroundColor=[UIColor yellowColor];
[bt addTarget:self action:@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;
[t setNeedsDisplay];
}
注意上面加紅的兩行代碼。當(dāng)[t setBackgroundColor:nil];或者不設(shè)置BackgroundColor時(shí)默認(rèn)也是nil的。然后不停的按Button。效果如下
上面的圖顯示 重新繪制的時(shí)候沒(méi)有清空前面繪制的。
但是當(dāng)[t setBackgroundColor:[UIColor clearColor]];后不停按Button效果如下
如上圖 重繪的時(shí)候會(huì)清除前面的繪圖。所以有時(shí)候不一定要自己手動(dòng)清空去 可能就是這點(diǎn)沒(méi)注意。
(希望大神能解釋這一現(xiàn)象的原因)。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。