2017-10-31 16 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) 

참고 : 스위프트 3에서 CGPathCreateCopyByDashingPathpath.copy(dashingWithPhase:lengths:)

예컨대 대체되었습니다

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