2025.01.15 工作变动原因,故将一些工作期间Tapd内部写的Wiki文档转移到个人博客。
上进成长体系,证书时间轴开发中需要绘制虚线,所以做了一个通用的绘制虚线代码封装。
效果图
设计思路
- 既支持水平方向绘制,也支持垂直方向绘制
- 能自定义颜色、长度、间距等等。
- 使用UIView自定义,不需要引入额外变量,开箱即用。
具体实现
extension UIView {
/// 绘制虚线
/// - Parameters:
/// - lineLength: 一段虚线的长度
/// - lineSpacing: 虚线之间的间距
/// - lineColor: 虚线颜色
/// - lineWidth: 描边路径时使用的线宽。默认为1。
/// - direction: 虚线方向方向,水平 / 垂直
func drawDashLine(lineLength: CGFloat, lineSpacing: CGFloat, lineColor : UIColor, lineWidth: CGFloat = 1, direction: UICollectionView.ScrollDirection) {
let shapeLayer = CAShapeLayer()
shapeLayer.bounds = self.bounds
shapeLayer.anchorPoint = CGPoint(x: 0, y: 0)
shapeLayer.strokeColor = lineColor.cgColor
shapeLayer.lineWidth = lineWidth
shapeLayer.lineJoin = CAShapeLayerLineJoin.round
shapeLayer.lineDashPattern = [NSNumber(value: lineLength),NSNumber(value: lineSpacing)]
let path = CGMutablePath()
path.move(to: CGPoint(x: 0, y: 0))
path.addLine(to: CGPoint(x: direction == .horizontal ? self.bounds.size.width : 0, y: direction == .vertical ? self.bounds.size.height : 0))
shapeLayer.path = path
self.layer.addSublayer(shapeLayer)
}
}
项目中实现方法并测试可行后,迁移至拓展库(成长体系、上进青年)共用。