我有一個CAShapeLayer在我的視圖中,它具有CGPath鑄造的Bezierpath實例的路徑。我現在想要動畫結束和兩個控制點,例如該行的結尾正在移動(不停止)。怎麼做?我看着CABasicAninmations,但沒有得到如何訪問終點。與有持續時間的動畫相同。如何讓這發生在無盡的時間。如何動畫結束和控制點SWIFT
1
A
回答
1
您可以使用CADisplayLink
(它就像是NSTimer
,除了動畫幀更新的最佳時間外)並更新CAShapeLayer
的path
。
例如:
var displayLink: CADisplayLink?
var startTime: CFAbsoluteTime?
let duration = 2.0
var shapeLayer: CAShapeLayer?
override func viewDidLoad() {
super.viewDidLoad()
shapeLayer = CAShapeLayer()
shapeLayer?.fillColor = UIColor.clearColor().CGColor
shapeLayer?.strokeColor = UIColor.blueColor().CGColor
shapeLayer?.lineWidth = 10
shapeLayer?.frame = view.bounds
view.layer.addSublayer(shapeLayer!)
startTime = CFAbsoluteTimeGetCurrent()
displayLink = CADisplayLink(target: self, selector: "handleDisplayLink:")
displayLink?.addToRunLoop(NSRunLoop.mainRunLoop(), forMode: NSRunLoopCommonModes)
}
func handleDisplayLink(displayLink: CADisplayLink) {
let elapsed = CFAbsoluteTimeGetCurrent() - startTime!
let percent = (elapsed % duration)/duration
let path = UIBezierPath()
let startPoint = CGPoint(x: 0, y: view.bounds.size.height/2.0)
let controlPoint = CGPoint(x: view.bounds.size.width/20, y: view.bounds.size.height * CGFloat(0.5 + sin(percent * M_PI * 2.0)/2.0))
let endPoint = CGPoint(x: view.bounds.size.width - 1, y: view.bounds.size.height/2.0)
path.moveToPoint(startPoint)
path.addQuadCurveToPoint(endPoint, controlPoint: controlPoint)
shapeLayer?.path = path.CGPath
}
即產率:
3
這裏有一些可能性。
配置預先動畫,即,通過產生一系列附圖,就像一個卡通的細胞,並使用這些圖片的簡單的UIImageView動畫。
使用CAShapeLayer和兩個
path
值之間的動畫。不幸的是,這並不能讓你完全控制中間幀,但你可以使用關鍵幀動畫來提供中間幀,從而提供額外的控制。動畫繪製的實際點。這是最難配置的,但它是真正的動畫,它可以讓你完全控制動畫。這就是我在這裏所做的:我通過創建一個自定義動畫屬性來實現它 - 在這種情況下,它是一個表示三角形底點的x位置的屬性。你必須這樣做所有你想要動畫的點。
相關問題
- 1. Swift:在UIImageView上製作動畫約束
- 2. 如何開始動畫結束活動
- 3. 在Swift中使用SKAction.animateWithTextures的動畫開始和結束
- 4. 如何製作啓動畫面結束動畫並開始下一個活動?
- 5. 如何處理佈局動畫結束
- 6. 如何獲取動畫結束通知
- 7. 如何突然結束動畫?
- 8. 如何通過動畫結束UILongPressGestureRecognizer?
- 9. UITableView,如何捕捉動畫結束?
- 10. 如何聲明動畫結束?
- 11. 如何結束動畫? (處理)
- 12. 如何控制Unity動畫?
- 13. 如何在另一個動畫結束時啓動動畫?
- 14. 如何使用curveEaseInOut或Keyframes控制Swift中動畫的速度?
- 15. 當動畫結束時執行動畫
- 16. 用動畫GIF結束Flash動畫
- 17. 執行動畫動畫結束時
- 18. 如何在Android中動畫結束後刪除動畫視圖?
- 19. 如何在佈局動畫結束時觸發動畫
- 20. 如何檢測CSS動畫何時以JavaScript開始和結束?
- 21. 的UIView動畫結束
- 22. 結束動畫事件android
- 23. CALayer動畫結束回調?
- 24. UIRefreshController結束動畫問題
- 25. Android動畫快速結束
- 26. 安卓:當動畫結束
- 27. 跳到CSS動畫結束
- 28. CSS3動畫結束技術
- 29. 等待動畫結束
- 30. iPhone等待動畫結束
http://stackoverflow.com/a/30292047/2303865 –