「+」ボタンから「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にリサイズされるように見えますが、制約の定義がないため、ナビゲーションボタンのサイズを修正する方法がわかりません。
および制約用
注:を使用する2番目のアプローチ 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
回答№2の場合は1
CABasicAnimationで次の行を試してください。
rotateAnimation.removedOnCompletion = false
問題が解決する場合があります。