/ / iOS UIButton в панелі навігації зникає після виконання анімації перетворення - iphone, swift, uibutton, ios-animations

iOS UIButton на панелі навігації зникає після виконання трансформації анімації - iphone, swift, uibutton, ios-animations

Я намагаюся анімувати перетворення з кнопки "+" на кнопку "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

Це може вирішити вашу проблему.