美文网首页
高效绘制

高效绘制

作者: GTMYang | 来源:发表于2018-07-05 17:15 被阅读0次

drawsAsynchronously 异步绘制

iOS 6中,苹果为CALayer引入了这个令人好奇的属性,drawsAsynchronously属性对传入-drawLayer:inContext:的CGContext进行改动,允许CGContext延缓绘制命令的执行以至于不阻塞用户交互。
它与CATiledLayer使用的异步绘制并不相同。它自己的-drawLayer:inContext:方法只会在主线程调用,但是CGContext并不等待每个绘制命令的结束。相反地,它会将命令加入队列,当方法返回时,在后台线程逐个执行真正的绘制。

shouldRasterize 缓存图层内容

UITableViewCell的图层非常适合做缓存。可以开启缓存。

    //rasterize
    cell.layer.shouldRasterize = YES;
    cell.layer.rasterizationScale = [UIScreen mainScreen].scale;

脏矩阵

当你检测到指定视图或图层的指定部分需要被重绘,你直接调用-setNeedsDisplayInRect:来标记它,然后将影响到的矩形作为参数传入。
相比依赖于Core Graphics为你重绘,裁剪出自己的绘制区域可能会让你避免不必要的操作。那就是说,如果你的裁剪逻辑相当复杂,那还是让Core Graphics来代劳吧,记住:当你能高效完成的时候才这样做。

- (void)addBrushStrokeAtPoint:(CGPoint)point
{
    //add brush stroke to array
    [self.strokes addObject:[NSValue valueWithCGPoint:point]];

    //set dirty rect
    [self setNeedsDisplayInRect:[self brushRectForPoint:point]];
}

- (CGRect)brushRectForPoint:(CGPoint)point
{
    return CGRectMake(point.x - BRUSH_SIZE/2, point.y - BRUSH_SIZE/2, BRUSH_SIZE, BRUSH_SIZE);
}

- (void)drawRect:(CGRect)rect
{
    //redraw strokes
    for (NSValue *value in self.strokes) {
        //get point
        CGPoint point = [value CGPointValue];

        //get brush rect
        CGRect brushRect = [self brushRectForPoint:point];
        
        //only draw brush stroke if it intersects dirty rect
        if (CGRectIntersectsRect(rect, brushRect)) {
            //draw brush stroke
            [[UIImage imageNamed:@"Chalk.png"] drawInRect:brushRect];
        }
    }
}

相关文章

  • 高效绘制

    drawsAsynchronously 异步绘制 iOS 6中,苹果为CALayer引入了这个令人好奇的属性,d...

  • swift 4.2 高效绘制圆角

    //高效绘制圆角UIImageViewextension UIImageView{ func setCornerI...

  • 任务十

    古诗绘制思维导图 帮助高效记忆

  • 思维导图基础篇

    1、绘制思维导图从工具上来说:上手快、更高效、更聚焦内容; 2、绘制流程五步法:思考内容-绘制主题和主分支-绘制子...

  • iOS-性能调优

    屏幕绘制:https://segmentfault.com/a/1190000000390012高效圆角:http...

  • 如何高效绘制思维导图

    如何高效绘制思维导图?还有很多伙伴感到很疑惑为什么同样的方法绘制出的成品总是差别很大呢?下面小编为你介绍一种高效绘...

  • 高效绘制圆角图片

    出于美观的原因,现在很多地方只要需要显示用户头像时都可能显示成圆形的,这时候就需要我们自己来处理, 说到把图片裁剪...

  • 2,绘制草图01练习

    2,绘制草图01练习 技巧:运用圆角的功能能提高效率

  • iOS专用图层CAReplicatorLayer、CAEmitt

    CAReplicatorLayer CAReplicatorLayer目的是高效生成许多相似的图层。它会绘制一个或...

  • 思维导图 | 从0到月入5万+的阅读变现路径

    内容来源:静姐高效阅读变现分享公开课D001 绘制:英子喵

网友评论

      本文标题:高效绘制

      本文链接:https://www.haomeiwen.com/subject/aygpuftx.html