//
// 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();
}
}
2021-05-10
最新推荐文章于 2021-07-13 15:22:19 发布