Я намагаюся анімувати перетворення з кнопки "+" на кнопку "X", обертаючи її при натисканні.
Все чудово працює, коли я використовую стандартну кнопку на UIView. Я використовую наступний код:
UIView.animateWithDuration(2.0, delay: 0.0, options: .CurveEaseOut, animations: {
let transform = CGAffineTransformMakeRotation(CGFloat(M_PI_4))
self.navigationPlusButton.transform = transform
}, completion: nil)
Проблема виникає, коли я намагаюся досягти того ж за допомогою кнопки на панелі навігації.
Схоже, висота кнопки змінюється до 0 перед обертанням, і я не знаю, як виправити розмір кнопки навігації, оскільки немає обмежень.
і для обмежень
Примітка: використання другого підходу CABasicAnimation кнопка добре обертається, але вона повертає її до початкового стану відразу після закінчення анімації. Я хотів би залишитися на "X", поки не натисну ще раз.
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)
Як це так легко працює поза навігаційною панеллю, і це так важко зробити на навігаційній панелі? Я не можу знайти рішення. Будь ласка, допоможіть
Відповіді:
1 для відповіді № 1спробуйте наступні рядки до вашого коду, це вирішить вашу проблему.
rotateAnimation.fillMode = kCAFillModeForwards
rotateAnimation.removedOnCompletion = false
1 для відповіді № 2
Спробуйте цей рядок на CABasicAnimation:
rotateAnimation.removedOnCompletion = false
Це може вирішити вашу проблему.