1
A
回答
4
您可以使用CABasicAnimation畫弧,例如
[沒有經過測試的代碼]
// e.g. 0.3 is 30%
func calculateEndAngle(percentageAsDouble: Double) -> CGFloat {
let endAngle:CGFloat = CGFloat(2 * M_PI - (M_PI * percentageAsDouble))
return endAngle
}
let animationCenter:CGPoint = self.view.center
let animationRadius:CGFloat = 100.0
let animationLineWidth:CGFloat = 16.0
let endAngle = calculateEndAngle(0.3)
let arcPath = UIBezierPath(arcCenter: animationCenter, radius: animationRadius, startAngle: CGFloat(M_PI), endAngle:endAngle, clockwise: true)
let arcLayer = CAShapeLayer()
arcLayer.path = arcPath.CGPath
arcLayer.fillColor = UIColor.clearColor().CGColor
arcLayer.strokeColor = UIColor.greenColor().CGColor
arcLayer.lineWidth = animationLineWidth
self.view.layer.addSublayer(arcLayer)
0
相關問題
- 1. 斯威夫特 - JSQMessagesViewController與斯威夫特
- 2. 與斯威夫特
- 3. 與斯威夫特
- 4. iOS - 繪製漸變 - 斯威夫特
- 5. 斯威夫特繪製線型圖與1000+數據點
- 6. 斯威夫特轉換斯威夫特
- 7. 斯威夫特2斯威夫特3
- 8. 斯威夫特:陣列圖像名稱
- 9. 的NSView與斯威夫特
- 10. 圓角的UIView斯威夫特4
- 11. 複製斯威夫特
- 12. 強制斯威夫特
- 13. 斯威夫特
- 14. 斯威夫特
- 15. 斯威夫特
- 16. 斯威夫特
- 17. 斯威夫特
- 18. 斯威夫特
- 19. 斯威夫特
- 20. 斯威夫特
- 21. 斯威夫特
- 22. 斯威夫特
- 23. 斯威夫特
- 24. 斯威夫特
- 25. 斯威夫特
- 26. 斯威夫特
- 27. 斯威夫特
- 28. 斯威夫特
- 29. 斯威夫特
- 30. 斯威夫特
謝謝!這很好,但是如何根據某些數據計算角度? 像,有三個值 - 30%,50%和20%?如何用它們之間的白線繪製這三個切片? – scourGINHO
所以整圓是2 * M_PI,所以你需要保留一個開始和結束值的列表,每個正確的弧長(0.3 * 2 * M_PI是30%,但你需要根據30 %開始)。 – Damo
你能否發表一段代碼來表明這一點? 使用虛擬數據 - 50%,30%,20%。無論從哪裏開始。 – scourGINHO