2017-01-04 98 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

問題是,如果按鈕被隱藏,您將Alpha的動畫設置爲1,但我們無法看到 - 因爲按鈕被隱藏了!然後,您將isHidden設置爲false,然後按鈕跳轉到視圖中。

解決方案:忘記所有關於isHidden並只更改alpha - 然後更改您的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) 
}