2017-10-31 23 views
1

私が見つけたすべての説明は同じことを言っているようです。なぜこれが機能していないのかわかりません。Swiftを使用してUIBezierPathから破線のSKShapeNodeを作成するにはどうすればよいですか?

var linePath = UIBezierPath() 
linePath.move(to: CGPoint(x: 50, y: 50)) 
linePath.addLine(to: CGPoint(x: 100, y: 100)) 

var pattern : [CGFloat] = [10.0, 10.0] 
linePath.setLineDash(pattern, count: pattern.count, phase: 0) 
linePath.lineWidth = 10 
linePath.lineCapStyle = .round 

let shape = SKShapeNode() 
shape.path = linePath.cgPath 
shape.strokeColor = UIColor.white 

self.addChild(shape) 

このコードが正常に線を描画それでも幅を含むlinePathの破線の特性を、shape継承されません。何か案は?

答えて

2
let linePath = UIBezierPath() 
linePath.move(to: CGPoint(x: 50, y: 50)) 
linePath.addLine(to: CGPoint(x: 100, y: 100)) 

var pattern: [CGFloat] = [10.0, 10.0] 
let dashed = CGPathCreateCopyByDashingPath (linePath.CGPath, nil, 0, pattern, 2) 

var shape = SKShapeNode(path: dashed) 
shape.strokeColor = UIColor.white 

self.addChild(shape) 

注:CGPathCreateCopyByDashingPathスウィフト3においては、例えばpath.copy(dashingWithPhase:lengths:)

により置換されています

let dashed = SKShapeNode(path: linePath.cgPath.copy(dashingWithPhase: 2, lengths: pattern))

関連する問題