IOS绘图的奇怪现象-创新互联

最近应用需要自绘控件  但是在绘制view的时候遇到一个现象。这个现象也许能让大家绘制控件的时候调bug少一些时间。

成都创新互联为企业级客户提高一站式互联网+设计服务,主要包括网站制作、成都网站设计、成都app软件开发公司成都微信小程序、宣传片制作、LOGO设计等,帮助客户快速提升营销能力和企业形象,创新互联各部门都有经验丰富的经验,可以确保每一个作品的质量和创作周期,同时每年都有很多新员工加入,为我们带来大量新的创意。 

如我有一个UIView,实现如下

- (void)drawRect:(CGRect)rect

{

   CGContextRef context=UIGraphicsGetCurrentContext();

  CGContextSetStrokeColorWithColor(context, [UIColor yellowColor].CGColor);

    CGContextMoveToPoint(context, X1, Y1);

  CGContextAddLineToPoint(context, X2, Y2);

  CGContextStrokePath(context);

}

然后我把这个绘制的UIview给一个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];

}

注意上面加红的两行代码。当[t setBackgroundColor:nil];或者不设置BackgroundColor时默认也是nil的。然后不停的按Button。效果如下

IOS 绘图的奇怪现象

上面的图显示 重新绘制的时候没有清空前面绘制的。

但是当[t setBackgroundColor:[UIColor clearColor]];后不停按Button效果如下

IOS 绘图的奇怪现象

如上图 重绘的时候会清除前面的绘图。所以有时候不一定要自己手动清空去  可能就是这点没注意。

(希望大神能解释这一现象的原因)。

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


本文标题:IOS绘图的奇怪现象-创新互联
分享地址:http://pwwzsj.com/article/djgdgg.html