2017-01-04 8 views
0

私は基本的なアニメーションを作成しようとしています。私は隠すか、または表示するためにボタンに触れる必要があります。アニメーション表示ボタン

私は、画面をタップして、このコードを書いた:

func visibleControlButton(_ sender: UITapGestureRecognizer) { 
    if (backButton!.isHidden) { 
     _UIButtonHiddenAnimation.hiddenAnimation(button: self.backButton!, hide: false) 
    } else { 
     _UIButtonHiddenAnimation.hiddenAnimation(button: self.backButton!, hide: true) 
    } 
} 

定義_UIButtonHiddenAnimation:

class _UIButtonHiddenAnimation { 
    class func hiddenAnimation(button: UIButton, hide: Bool) { 
     UIView.animate(withDuration: 0.2, 
         animations: { 
          hide ? (button.alpha = 0) : (button.alpha = 1.0) 
         }, 
         completion: { 
          finished in hide ? (button.isHidden = true) : (button.isHidden = false) 
         }) 
    } 
} 

を単にボタンを非表示アニメーション化します。どのようにボタンのアニメーションの外観を作るには?

+0

あなたが書いたコードは隠して、ちょうど良い表示する必要があります。問題はボタンが隠された後で、同じボタンをタップすることはできません。だからあなたは 'self.isHidden'コードを補完ブロックに書くべきではありません。 –

答えて

2

ボタンが隠されていると、アルファを1にアニメーション化していますが、ボタンが表示されないため、表示できません。次にisHiddenfalseに設定すると、ボタンが表示されます。

解決方法:isHiddenを忘れて、アルファのみを変更してから、ifのテストを変更して、ボタンで何をしているのか、つまりalphaの値をテストしてください。したがって、(私たちが行くように物事を仕上げて):

class _UIButtonHiddenAnimation { 
    class func hiddenAnimation(button: UIButton, hide: Bool) { 
     UIView.animate(withDuration: 0.2, animations: { 
      button.alpha = hide ? 0 : 1.0 
     }) 
    } 
} 

func visibleControlButton(_ sender: UITapGestureRecognizer) { 
    _UIButtonHiddenAnimation.hiddenAnimation(
     button: self.backButton!, hide: backButton!.alpha > 0.1) 
} 
関連する問題