簡體   English   中英

如何使用Swift從UIBezierPath創建虛線SKShapeNode?

[英]How Can I Create a Dashed Line SKShapeNode from a UIBezierPath, Using Swift?

我發現的所有解釋似乎都說相同的話。 我不知道為什么這不起作用。

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)

這段代碼成功繪制了一條線,但是shape不繼承linePath的虛線屬性,包括寬度。 有任何想法嗎?

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)

注意:在Swift 3中, CGPathCreateCopyByDashingPath已由path.copy(dashingWithPhase:lengths:)取代。

例如

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM