溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

IOS 繪圖的奇怪現(xiàn)象

發(fā)布時(shí)間:2020-07-17 09:29:02 來(lái)源:網(wǎng)絡(luò) 閱讀:423 作者:zfajqp 欄目:移動(dòng)開(kāi)發(fā)

 最近應(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。效果如下

 

IOS 繪圖的奇怪現(xiàn)象

上面的圖顯示 重新繪制的時(shí)候沒(méi)有清空前面繪制的。

但是當(dāng)[t setBackgroundColor:[UIColor clearColor]];后不停按Button效果如下

 

IOS 繪圖的奇怪現(xiàn)象

如上圖 重繪的時(shí)候會(huì)清除前面的繪圖。所以有時(shí)候不一定要自己手動(dòng)清空去  可能就是這點(diǎn)沒(méi)注意。

(希望大神能解釋這一現(xiàn)象的原因)。

 

向AI問(wèn)一下細(xì)節(jié)

免責(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)容。

AI