使用swift移动和动画UIImageView

Pom*_*pey 4 uiimageview quartz-core swift ios8

我这里有一个相当简单的问题.基本上我正在尝试将一个对象(一个UIImageView)从A点(它在故事板中设置)移动到我以编程方式定义的B点.

我的第一次传递导致了这段代码

        UIView.animateWithDuration(0.75, delay: 0.5, options: UIViewAnimationOptions.CurveLinear, animations: {
            self.signInButton.alpha = 1
            self.signInButton.center.y = 10
        }, completion: nil)
Run Code Online (Sandbox Code Playgroud)

但是,此代码的作用基本上是将按钮偏离中心,然后再返回其原始位置.

然后我调查了QuartzCore来帮助我,但一切都在Objective-C中.我有这个方法:

    func moveImage(view: UIImageView){
        var toPoint: CGPoint = CGPointMake(0.0, -10.0)
        var fromPoint : CGPoint = CGPointZero

        var movement = CABasicAnimation(keyPath: "movement")
        movement.additive = true
        movement.fromValue = fromPoint
        movement.toValue = toPoint
        movement.duration = 0.3

        view.layer.addAnimation(movement, forKey: "move")
    }
Run Code Online (Sandbox Code Playgroud)

但是这里的问题是movement.fromValue不能接受的CGPoint.我知道在目标C中有一个函数将a转换CGPoint为a NSValue,但是这个函数似乎是从Swift中弃用的,我找不到另一种方法.

因此,我的问题是,如何转换CGPointNSValue使我的moveImage()功能工作,还是有更好的方法将对象从A点移动到B点?

谢谢!

我正在看这个问题Animate UIImage在UIImageView Up&Down(喜欢它的悬停)循环

cod*_*ter 12

使用NSValue(CGPoint: cgpiont)而不是NSValue.valueWithCGPoint(<#point: CGPoint#>)在swift中弃用.NSValue(CGPoint: cgpiont)是给定的构造函数,可用于转换CGPointNSValue swift.Following代码将起作用

func moveImage(view: UIImageView){
    var toPoint: CGPoint = CGPointMake(0.0, -10.0)
    var fromPoint : CGPoint = CGPointZero

    var movement = CABasicAnimation(keyPath: "movement")
    movement.additive = true
    movement.fromValue =  NSValue(CGPoint: fromPoint)
    movement.toValue =  NSValue(CGPoint: toPoint)
    movement.duration = 0.3

    view.layer.addAnimation(movement, forKey: "move")
}
Run Code Online (Sandbox Code Playgroud)

  • var movement = CABasicAnimation(keyPath:"position")这个有效!!我认为你应该指定"位置" (4认同)

小智 5

SWIFT 3 更新

 func moveImageView(imgView: UIImageView){
        var toPoint:CGPoint = CGPoint(x: 0.0, y: -10.0)
        var fromPoint:CGPoint = CGPoint.zero
        var movement = CABasicAnimation(keyPath: "movement")
        movement.isAdditive = true
        movement.fromValue = NSValue(cgPoint: fromPoint)
        movement.toValue = NSValue(cgPoint: toPoint)
        movement.duration = 0.3
        imgView.layer.add(movement, forKey: "move")
    }
Run Code Online (Sandbox Code Playgroud)