美文网首页
iOS绘图的两种方式

iOS绘图的两种方式

作者: 佚名_i | 来源:发表于2018-02-08 15:09 被阅读25次

    CAShapeLayer 属于 CoreAnimation框架 继承自CALayer
    一个CAShapeLayer对象只能配合一个UIBezierPath对象,但是这个UIBezierPath实例可以添加UIBezierPath实例。UIBezierPath提供矢量路径,路径会闭环即使UIBezierPath不是一个闭环取消,这样就得到了一个shape。
    UIView的[- drawRect:]方法是用CPU渲染的,而CAShaperLayer是使用GPU效率更高。

    CAShapeLayer的属性:

    • path:渲染路径
    • fillColor: 图形的填充颜色(透明或者nil,不然默认是黑色)【重要】
    • lineCap: 线端口样式(粗线段起始位置的圆角还是倒角)
    • lineWidth: 线宽度
    • stokeStart:在曲线中相对起点的位置【动画】
    • strokeEnd:在曲线中相对终点的位置,必须大于stokeStart【动画】
    • [setLineDashPattern:@[@(0),@(25)]; 设置虚线:虚线段长度,虚线段的间隔

    UIBezierPath的属性和常用方法:

    • 初始化实例对象

      • 默认 [UIBezierPath bezierPath];
      • 带图形的
        • 矩形曲线: [UIBezierPath bezierPathWithRect:CGRectMake(160, 70, 100, 50)]
        • 圆弧: [UIBezierPath bezierPathWithArcCenter:CGPointMake(200, 200) radius:50 startAngle:M_PI endAngle:3*M_PI clockwise:YES]
        • 椭圆: [+ bezierPathWithOvalInRect:]
    • [- moveToPoint:] 开始一个新的起点来作画

    • [- appendPath:] 添加一个子路线(同心圆)

    • [-addCurveToPoint:controlPoint1:controlPoint2] 绘制二阶贝塞尔曲线

    • [- stroke] 关闭路径,在[- UIVie drawRect:]中,在CAShapeLayer中不会使用这个方法,否则控制面板会打印一些警告。CGContextSaveGState: invalid context 0x0. If you want to see the backtrace, please set CG_CONTEXT_SHOW_BACKTRACE environmental variable.

    PaintCode生成的代码是基于[- UIVie drawRect:],不能直接用于CAShapeLayer中,这里可以设置UIBezierPath的线宽。

    在CAShapeLayer中设置UIBezierPath的线宽不起作用,需要设置CAShapeLayer的线宽。和UIBezierPath的appendPath一样CAShapeLayer也可以addSublayer
    小结一下这样类有: NSString,NSMutableArray,NSMutableData,UIView,UILayer,CALayer

    参考链接:

    UIBezierPath
    CGAffineTransform-仿射矩阵的变换
    iOS UIBezierPath(贝塞尔曲线)
    UIBezierPath

    相关文章

      网友评论

          本文标题:iOS绘图的两种方式

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