CABasicanimation翻译不起作用

时间:2015-03-10 03:18:31

标签: xcode swift

我正在使用Xcode开发应用程序,并试图让一个圆圈更改它的x位置。我写了下面的代码无济于事,代码没有给我一个错误,它根本不起作用。任何帮助,将不胜感激。 我的代码如下。

        func changeNotes() {
        switch notesState {
        case 1:
            let animation = CABasicAnimation()
            animation.keyPath = "transform.translate.x"
            animation.fromValue = 668
            animation.toValue = 55
            animation.duration = 0.2
            notesButton.layer.addAnimation(animation, forKey: "transformx")

            notesState = 0
        default:
           let animation = CABasicAnimation()
           animation.keyPath = "transform.translate.x"
           animation.fromValue = 55
           animation.toValue = 668
           animation.duration = 0.2
           notesButton.layer.addAnimation(animation, forKey: "transformx")

           notesState++

任何帮助?

1 个答案:

答案 0 :(得分:1)

let translateX = CABasicAnimation(keyPath: "position")  // declare it out of your function inside your view controller class just below any IBOulets you may have

translateX.fromValue = NSValue(CGPoint: CGPointMake(668,notesButton.layer.position.y))
translateX.toValue = NSValue(CGPoint: CGPointMake(55,notesButton.layer.position.y))
translateX.duration = 0.2
notesButton.layer.addAnimation(translateX, forKey: "position")

修改

不需要在那里使用外壳开关。你可以这样试试:

let translateX = CABasicAnimation(keyPath: "position")  // declare it out of your function inside your view controller class just below any IBOulets you may have


    if notesButton.layer.position.x == 668 {
        translateX.fromValue = NSValue(CGPoint: CGPointMake(668,notesButton.layer.position.y))
        translateX.toValue = NSValue(CGPoint: CGPointMake(55,notesButton.layer.position.y))
        notesButton.layer.position.x = 55
        translateX.duration = 0.2
    } else {
        translateX.fromValue = NSValue(CGPoint: CGPointMake(55,notesButton.layer.position.y))
        translateX.toValue = NSValue(CGPoint: CGPointMake(668,notesButton.layer.position.y))
        notesButton.layer.position.x = 55
        translateX.duration = 0.2
    }
    notesButton.layer.addAnimation(translateX, forKey: "position")