【QuartzCore】CAShapeLayer - 绘图板

在这个上面画UIBezierPath曲线,然后add到任意的View上!灰常方便。本身也灰常方便。使用与UIBezierPath,类似,还能带动画!

绘制路径 - UIBezierPath 话个path 就好了

不多提了。看UIKit - UIBezierPath。只需要路径,属性什么不要设置,shapeLayer自己设置。其实差不多的。

设置 shapeLayer

    // 创建一个shapeLayer 
    CAShapeLayer *layer = [CAShapeLayer layer];
    layer.frame = self.view.bounds;
    
    layer.path = path.CGPath; // 从贝塞尔曲线获取到形状
    layer.lineWidth = 1.0f; // 线条宽度
    layer.strokeColor = [UIColor redColor].CGColor; // 边缘线的颜色
    layer.miterLimit = 2.;
    layer.lineDashPhase = 10;// 未知?
    layer.lineDashPattern = @[@3,@10];// 虚线
    
    layer.fillColor = [UIColor greenColor].CGColor; // 闭环填充的颜色

    layer.fillRule = kCAFillRuleNonZero;
    /*
     CA_EXTERN NSString *const kCAFillRuleNonZero
     CA_EXTERN NSString *const kCAFillRuleEvenOdd
     */
    
    layer.lineCap = kCALineCapSquare; // 边缘线的类型
    /*
     CA_EXTERN NSString *const kCALineCapButt
     CA_EXTERN NSString *const kCALineCapRound
     CA_EXTERN NSString *const kCALineCapSquare
     */
    
    layer.lineJoin = kCALineJoinRound;
    /*
     CA_EXTERN NSString *const kCALineJoinMiter
     CA_EXTERN NSString *const kCALineJoinRound
     CA_EXTERN NSString *const kCALineJoinBevel
     */
    
    // 结合 CABasicAnimation 可以变成 动画绘制

    // 将layer添加进图层
    [self.view.layer addSublayer:layer];
    

其他

@property CGFloat strokeStart;
@property CGFloat strokeEnd;
@property CGFloat lineDashPhase;

1

你可能感兴趣的:(【QuartzCore】CAShapeLayer - 绘图板)