• iOS-Core-Animation-Advanced-Techniques/13-高效绘图 【没理解】


    #import "DrawingView.h"
    #import <QuartzCore/QuartzCore.h>
    
    @interface DrawingView ()
    
    @property (nonatomic, strong) UIBezierPath *path;
    
    @end@implementation DrawingView
    
    + (Class)layerClass // 这是啥意思?????哦哦 调用self.layer可以直接返回CAShapLayer
    {
        //this makes our view create a CAShapeLayer
        //instead of a CALayer for its backing layer
        return [CAShapeLayer class];
    }
    
    - (void)awakeFromNib
    {
        //create a mutable path
        self.path = [[UIBezierPath alloc] init];
    
        //configure the layer
        CAShapeLayer *shapeLayer = (CAShapeLayer *)self.layer;
        shapeLayer.strokeColor = [UIColor redColor].CGColor;
        shapeLayer.fillColor = [UIColor clearColor].CGColor;
        shapeLayer.lineJoin = kCALineJoinRound;
        shapeLayer.lineCap = kCALineCapRound;
        shapeLayer.lineWidth = 5;
    }
    
    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
    {
        //get the starting point
        CGPoint point = [[touches anyObject] locationInView:self];
    
        //move the path drawing cursor to the starting point
        [self.path moveToPoint:point];
    }
    
    - (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
    {
        //get the current point
        CGPoint point = [[touches anyObject] locationInView:self];
    
        //add a new line segment to our path
        [self.path addLineToPoint:point];
    
        //update the layer with a copy of the path
        ((CAShapeLayer *)self.layer).path = self.path.CGPath;
    }
    @end

    从这段可知,使用CAShapLayer的性能要好于重写drawRect,因为drawRect,drawLayer使用的Core Graphic,Core Graphic会有性能问题(内存消耗),避免使用Core Graphic

  • 相关阅读:
    图表算法—有向图
    图表算法—无向图
    搜索算法—哈希表
    红黑树的删除
    搜索算法—红黑树
    搜索算法—二叉搜索树
    排序算法—堆排序
    快速排序改进——3区快速排序(3-way quicksort)
    数论——约数:算数基本定理及推论,欧几里得算法
    数论——乘法逆元(快速幂求法)及模运算
  • 原文地址:https://www.cnblogs.com/tufei7/p/9874672.html
Copyright © 2020-2023  润新知