2021-05-10

//
//  LMLineDrawView.swift
//  LabelTest
//
//  Created by mingke on 2021/4/1.
//

import UIKit

class LMLineDrawView: LMBaseDrawView {

    //CAShapeLayer其中的Shape就是指的是形状,也就是说,他需要一个形状才能完成渲染
    //而UIBezierPath就是能够通过代码来设置特定的形状,UIBezierPath+CAShapeLayer就可以完成相关的渲染
    //要搭配layer
    let lineLayer = CAShapeLayer();
    //贝塞尔曲线
    var bezierLine : UIBezierPath?;
    
    override init(frame: CGRect) {
        super.init(frame: frame);
        /*
         //初始化生成一个矩形
        bezierLine = UIBezierPath.init(rect: CGRect.init(x: 10, y: 10, width: 160, height: 80));
         */
        /*
        //通过设置中间点,形成一个三角形
        bezierLine = UIBezierPath();
        bezierLine?.move(to: CGPoint.init(x: 20, y: 20));
        bezierLine?.addLine(to: CGPoint.init(x: 90, y: 90));
        bezierLine?.addLine(to: CGPoint.init(x: 120, y: 50));
        //bezierLine?.addLine(to: CGPoint.init(x: 20, y: 20)); //可以通过手动设置终点的形式制作封闭图形
        bezierLine?.close(); //亦可直接关闭图形,系统会自动将起点加入到最后,构成封闭图形
        */
        /*
        //通过构造函数生成椭圆
        //理论上形成的是指定CGRect的内切椭圆,如果CGRect是一个正方形,生成的就是圆形
        bezierLine = UIBezierPath.init(ovalIn: CGRect.init(x: 10, y: 10, width: 150, height: 100));
        */
        /*
        //生成圆角矩形
        bezierLine = UIBezierPath.init(roundedRect: CGRect.init(x: 10, y: 10, width: 100, height: 100), cornerRadius: 25);
        */
        /*
        //圆弧的绘制
        /*
         * 参数的描述:arcCenter:圆弧的圆心的位置
         * radius:圆弧所在圆的半径 startAngle:起始点的角度 endAngle:终点的角度
         * clockwise:是否沿顺时针方向
         * 对于转动角度而言,使用Pi来表示角度,一个整圆的角度是2*pi,可以按照需要自行设置
         */
        bezierLine = UIBezierPath.init(arcCenter: CGPoint.init(x: 100, y: 100), radius: 50, startAngle: 0, endAngle: CGFloat.pi, clockwise: true);
        */
        /*
        //测试二次贝塞尔曲线的使用
        /*
         * 所谓二次曲线,存在一个起始点:startPoint,一个终点:endPoint,可以形成一条直线,在此基础上,再加上一个控制点:controlPoint,最终形成的曲线由起点出发,趋向于控制点(不会到达),最终到达终点
         */
        bezierLine = UIBezierPath();
        bezierLine?.move(to: CGPoint.init(x: 10, y: 100))
        bezierLine?.addQuadCurve(to: CGPoint.init(x: 110, y: 70), controlPoint: CGPoint.init(x: 55, y: 50));
        */
        /*
        //测试三次贝塞尔曲线的使用
        /*
         * 所谓三次曲线就是在二次曲线的基础上,再加上一个控制点2: controlPoint1,最终形成的曲线,由起点出发,先趋向于第一个控制点(不会到达),再趋向于第二个控制点(不会到达),最后到达终点,形成一个曲线
         */
        bezierLine = UIBezierPath();
        bezierLine?.move(to: CGPoint.init(x: 10, y: 100));
        bezierLine?.addCurve(to: CGPoint.init(x: 160, y: 70), controlPoint1: CGPoint.init(x: 40, y: 30), controlPoint2: CGPoint.init(x: 100, y: 120));
         */
        /*
        //给layer设置图形
        lineLayer.path = bezierLine?.cgPath;
        //设置图形填充色,实现空心的效果
        lineLayer.fillColor = UIColor.clear.cgColor;
        //设置边框的颜色
        lineLayer.strokeColor = UIColor.red.cgColor;
        //线条样式,数组表示实线虚线的长度,下面的数组就表示:长度为2实线,长度为2的虚线,后面是无限循环,做出虚线的形式
        lineLayer.lineDashPattern = [2, 2];
        //线条宽度
        lineLayer.lineWidth = 3;
        //拐点的样式
        lineLayer.lineJoin = .round;
        //终点的样式
        
        self.layer.addSublayer(lineLayer);
        */
    }
    
    required init?(coder: NSCoder) {
        super.init(coder: coder);
    }
    
    override func layoutSubviews() {
        super.layoutSubviews();
    }
    
   

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值