2015-03-10 2 views
1

Я использую Xcode для разработки приложения, и я пытаюсь изменить круг, это место x. Я написал следующий код безрезультатно, код не дает мне ошибку, он просто не работает. Любая помощь будет оценена по достоинству. Мой код ниже.CABasic animation translate not working

 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
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") 
+0

Это все еще не работает, я делаю это правильно? Прошу прощения, если я пропущу что-то очевидное, я до сих пор довольно новичок в этом. (Загружая это как изображение, потому что код не подходит) http://imgur.com/q9uMZT1 – BobJonesies

+0

Возможно, стоит упомянуть, что он находится под другой анимацией, вызванной тем же изменением функции: http://imgur.com/ub0oEBn Работа сверху. – BobJonesies

+0

@BobJonesie вам нужно выбрать другие имена для ваших функций. измените его на func changeRadius() {...}, а другой на фонд changePosition() {...} –