簡體   English   中英

如何使用/不使用UIBezierPath在Swift中循環圖像?

[英]How do I circulate an image in Swift using/without using UIBezierPath?

我正在嘗試使用UIBezierPath使圖像循環。 這是我用來確定圖像的xy坐標,其寬度和高度的代碼。

var frm : CGRect = self.image.frame
    let originX = frm.origin.x
    let originY = frm.origin.y
    let originWidth = frm.size.width
    let originHeight = frm.size.height
    self.image.frame = frm

但是,如果我在此代碼中放入originXoriginY

let path = UIBezierPath()
    path.moveToPoint(CGPoint(x: originX+50, y: originY))
    path.addCurveToPoint(CGPoint(x: originX-20, y: originY),
    controlPoint1: CGPoint(x: originX+20, y: originY),
    controlPoint2: CGPoint(x: originX-10, y: originY))

    let anim = CAKeyframeAnimation(keyPath: "position")

    // set the animations path to our bezier curve
    anim.path = path.CGPath

    anim.repeatCount = Float.infinity
    anim.duration = 5.0

    image.layer.addAnimation(anim, forKey: "animate position along path")

圖像僅停留在屏幕的左上方(而不是靠近中心放置)。 為什么? 順便說一句,除了使用UIPathBezier之外,還有其他方法可以使圖像循環嗎?

好吧,首先,您需要重寫UIBezierPath()構造函數,以便可以將參數指定為originXoriginY ,還必須使用var而不是let因為var是一個簡單變量,let是一個constant ,並且不能在Swift中進行修改。

我沒有Xcode,但代碼應如下所示:

override func UIBezierPath(#x:CGFloat, andOriginX:CGFloat) {
}

let path = UIBezierPath(x, y)
    path.moveToPoint(CGPoint(x: x+50, y: y)) // and so one...
    path.addCurveToPoint(CGPoint(x: originX-20, y: originY),
    controlPoint1: CGPoint(x: originX+20, y: originY),
    controlPoint2: CGPoint(x: originX-10, y: originY))

    let anim = CAKeyframeAnimation(keyPath: "position")

    // set the animations path to our bezier curve
    anim.path = path.CGPath

    anim.repeatCount = Float.infinity
    anim.duration = 5.0
    image.layer.addAnimation(anim, forKey: "animate position along path")
)

暫無
暫無

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

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