iOS 工具类 - 绘制虚线(拓展库封装)

195 阅读1分钟

2025.01.15 工作变动原因,故将一些工作期间Tapd内部写的Wiki文档转移到个人博客。

上进成长体系,证书时间轴开发中需要绘制虚线,所以做了一个通用的绘制虚线代码封装。

效果图

tapd_45228716_1719563220_617.png

设计思路

  1. 既支持水平方向绘制,也支持垂直方向绘制
  2. 能自定义颜色、长度、间距等等。
  3. 使用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)
    }
}

项目中实现方法并测试可行后,迁移至拓展库(成长体系、上进青年)共用。

最后,完结撒花

告辞.jpeg