10
A
回答
8
可以使用核心動畫和CAKeyFrameAnimation定義曲線點做到這一點。請參閱本教程:http://nachbaur.com/2011/01/07/core-animation-part-4/
-6
可以通過將動畫嵌套在completion子句中來堆疊動畫。
0
上方的一個可以通過achived: -
ⅰ)CAKeyframeAnimationⅱ)Create Curve Pathⅲ)動畫的自定義視圖
import UIKit
import CoreGraphics
class ViewController: UIViewController {
var moveAlongPath:CAAnimation!
override func viewDidLoad() {
super.viewDidLoad()
addAnimation()
initiateAnimation()
}
func curevedPath() -> UIBezierPath {
let path = createCurvePath()
let shapeLayer = CAShapeLayer()
shapeLayer.path = path.cgPath
shapeLayer.strokeColor = UIColor.blue.cgColor
shapeLayer.fillColor = UIColor.clear.cgColor
shapeLayer.lineWidth = 1.0
self.view.layer.addSublayer(shapeLayer)
return path
}
func addAnimation() {
let moveAlongPath = CAKeyframeAnimation(keyPath: "position")
moveAlongPath.path = curevedPath().cgPath
moveAlongPath.duration = 5
moveAlongPath.repeatCount = HUGE
moveAlongPath.calculationMode = kCAAnimationPaced
moveAlongPath.timingFunctions = [CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseOut)]
self.moveAlongPath = moveAlongPath
}
func initiateAnimation() {
let layer = createLayer()
layer.add(moveAlongPath, forKey: "animate along Path")
}
//MARK:- Custom View Path
func createLayer() -> CALayer {
let customView = CustomView(frame: CGRect(x: 0, y: 0, width: 50, height: 50))
self.view.addSubview(customView)
let customlayer = customView.layer
customlayer.bounds = CGRect(x: 0, y: 0, width: 50, height: 50)
customlayer.position = CGPoint(x: 25, y: 25)
return customlayer
}
//MARK:- Custom Curve Path
func createCurvePath() -> UIBezierPath {
let path = UIBezierPath()
path.move(to: CGPoint(x: 10, y: 200))
path.addQuadCurve(to: CGPoint(x: 300, y: 200), controlPoint: CGPoint(x: 150, y: 10))
return path
}
}
class CustomView:UIView {
override init(frame: CGRect) {
super.init(frame: frame)
setUpView()
}
func setUpView() {
let image = UIImage(named: "Go.png")
let imageView = UIImageView(image: image)
imageView.frame = CGRect(x: 0, y: 0, width: self.bounds.width, height: self.bounds.height)
addSubview(imageView)
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
}
相關問題
- 1. iOS - 沿彎曲路徑拖動對象
- 2. 沿着曲線路徑在背景中移動的圖像android
- 3. 沿着Bezier曲線路徑的iPhone移動UI圖像視圖
- 4. 沿着路徑在PHP中彎曲文本?
- 5. Cocos2d - 在彎曲路徑中移動精靈
- 6. Cocos2d - 以不同速度在彎曲路徑中移動物體
- 7. 沿路徑移動形狀?
- 8. QGraphicsItem沿着路徑移動
- 9. 對象沿路徑移動
- 10. 沿路徑移動精靈
- 11. 沿預定路徑移動圖像?
- 12. HTML5沿路徑移動圖像
- 13. 聚合物彎曲運動路徑
- 14. 瞭解如何沿着改變的路徑移動路徑
- 15. 沿着曲線路徑放置圖像
- 16. 在iOS中沿路徑檢測繪圖
- 17. 彎曲的三角形路徑?
- 18. 如何使box2d物體沿着貝塞爾曲線/圓弧路徑移動
- 19. 沿着路徑移動通過觸摸
- 20. CAKeyframeanimation沿着路徑移動UIView
- 21. Android路徑彎曲/波浪線
- 22. 沿着彎曲的UIBezierPath繪製漸變
- 23. 滾動時沿路徑移動背景圖像的位置
- 24. SVG:如何修正Bezier彎曲路徑的偏心標記?
- 25. iPhone UIImageView與動畫圖像需要沿着路徑移動
- 26. 沿着圓形路徑移動圖像視圖
- 27. SVG:沿曲線路徑追加形狀
- 28. 沿着帶有Java圖形的弧形路徑移動形狀
- 29. 沿着帶有java圖形的弧形路徑移動物體
- 30. 如何沿着路徑製作動畫
層謝謝...我將檢查 – 2011-04-30 05:59:02
該示例涉及動畫層,而不是整個視圖。我有一個案例,我需要沿着路徑移動整個UIView。我可以很容易地使用animateWithDuration從這裏到那裏,但我看不到如何使用它從這裏到那裏使用給定的路徑。當我嘗試將一堆animateWithDuration調用串起來時,最後一次調用總是取消較早的調用。 – EFC 2011-12-30 17:18:22