UIBezierPathの場合
UIViewのdraw( )の中で、以下のように書く。
//MARK:丸
let oval = UIBezierPath(ovalIn: CGRect(x: 100, y: 100, width: 200, height: 200))
UIColor.black.setFill() //stroke色
oval.lineWidth = 線幅
oval.setLineDash([10.0, 5.0, 5.0, 5.0], count: 4, phase: 0.0)
oval.stroke() //枠線描画
setLineDashがそれで、引数はUnsafePointerがどーとかわかりにくいんだけど、要は以下の3つだ。
- 点線の長さ、余白の長さの順に配列で指定
- 配列の要素数
- 配列の要素の使用開始位置
oval.setLineDash(UnsafePointer:<CGFloat>?, count: Int, phase: CGFloat)
CAShapeLayerの場合
こっちも似たようなもんだろう。
let lineDashPatterns: [[NSNumber]?] = [nil, [2,3], [10, 5, 5, 5]]
for (index, lineDashPattern) in lineDashPatterns.enumerated() {
let shapeLayer = CAShapeLayer()
shapeLayer.strokeColor = UIColor.black.cgColor
shapeLayer.lineWidth = 5
shapeLayer.lineDashPattern = lineDashPattern
let path = CGMutablePath()
let y = CGFloat(index * 50)
path.addLines(between: [CGPoint(x: 0, y: y),
CGPoint(x: 640, y: y)])
shapeLayer.path = path
layer.addSublayer(shapeLayer)
}
0 件のコメント:
コメントを投稿