/ /変換アニメーションを実行した後、ナビゲーションバーの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にリサイズされるように見えますが、制約の定義がないため、ナビゲーションボタンのサイズを修正する方法がわかりません。

ここに画像の説明を入力

および制約用

ここに画像の説明を入力

注:を使用する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

問題が解決する場合があります。