2016-05-20 3 views
0

Я пытаюсь анимировать преобразование с кнопки «+» на кнопку «X», вращая ее по щелчку.iOS UIButton в навигационной панели исчезает после выполнения анимации трансляции

enter image description here

Все прекрасно работает, когда я использую стандартную кнопку на UIView. Я использую следующий код:

UIView.animateWithDuration(2.0, delay: 0.0, options: .CurveEaseOut, animations: { 
     let transform = CGAffineTransformMakeRotation(CGFloat(M_PI_4)) 
     self.navigationPlusButton.transform = transform 
     }, completion: nil) 

Проблема возникает, когда я пытаюсь добиться этого с помощью кнопки в навигационной панели.

enter image description here

Похоже, высота кнопки изменяется на 0 до поворота, и я не знаю, как исправить размер кнопки навигации, так как нет никаких ограничений определений. Примечание раскадровки

enter image description here

и для ограничения

enter image description here

Примечание: Второй подход, использующий CABasicAnimation кнопку повернутый красиво, но вернулся он немедленно исходное состояние после завершения анимации. Я хотел бы остаться «Х», пока не нажму снова.

let rotateAnimation = CABasicAnimation(keyPath: "transform.rotation") 
    rotateAnimation.fromValue = 0.0 
    rotateAnimation.toValue = CGFloat(M_PI_4) 
    rotateAnimation.duration = 2.0 
    self.navigationPlusButton.layer.addAnimation(rotateAnimation, forKey: nil) 

enter image description here

Как это работает так легко за пределами панели навигации, и это так трудно сделать это на панели навигации? Я не могу найти решение. Пожалуйста, помогите

ответ

1

попробуйте следовать строкам кода, он решит вашу проблему.

rotateAnimation.fillMode = kCAFillModeForwards 
rotateAnimation.removedOnCompletion = false 
1

Попробуйте эту линию на CABasicAnimation:

rotateAnimation.removedOnCompletion = false 

Это может решить вашу проблему.

Смежные вопросы