如何描绘相对于UIView大小的点网格?

时间:2016-11-10 17:52:17

标签: ios iphone swift core-graphics uibezierpath

我正在尝试将UIBezierPath数组作为点网格显示。点的间距将相对于UIView的大小,类似于:(bounds.UIView / 10),以使每边的间距为10

基本上我有两个问题:

1)如何使用UIBezierPath划分单个点?

2)如何创建一个点数组并在UIView上对它们进行描述。

1 个答案:

答案 0 :(得分:0)

以下是 Swift 3

中的示例
func addDashedLine(layer: CALayer, dotSize: CGFloat) {
    let  p0 = CGPoint(x: 0, y: layer.bounds.height/2)
    let  p1 = CGPoint(x: layer.bounds.width, y: layer.bounds.height/2)

    let  path = UIBezierPath()
    path.move(to:p0)
    path.addLine(to:p1)
    path.stroke()

    let stepLength = Float(layer.bounds.width/10.0)
    let dashPattern = [NSNumber(value: 0.001), NSNumber(value: stepLength)]

    let shapeLayer = CAShapeLayer()
    shapeLayer.frame = layer.bounds
    shapeLayer.strokeColor = UIColor.red.cgColor
    shapeLayer.lineWidth = dotSize
    shapeLayer.lineJoin = kCALineJoinRound
    shapeLayer.lineCap = kCALineCapRound
    shapeLayer.lineDashPattern = dashPattern
    shapeLayer.lineDashPhase = dotSize
    shapeLayer.path = path.cgPath

    layer.addSublayer(shapeLayer)
}

此示例使用简单路径绘制水平线。如果你需要绘制一个具有固定点数的线,你需要首先计算它的长度,然后除以你想要绘制的点数。

用法:

override func viewDidLoad() {
    super.viewDidLoad()
    addDashedLine(layer: view.layer, dotSize: 3)
}

<强>输出:

enter image description here