簡體   English   中英

UIButton動畫擴展

[英]UIButton animation extension

我試圖通過創建標准動畫功能來減少在整個應用中使用的重復代碼的冗余。

我希望得到的結果是帶有可選完成處理程序的按鈕動畫。 這是我的代碼:

extension UIButton {  
  func animate(duration: TimeInterval, completion: ((Bool) -> Swift.Void)?) {
    UIView.animate(withDuration: duration, delay: 0.0, usingSpringWithDamping: 0.2, initialSpringVelocity: 6.0, options: [], animations: {
      self.transform = .identity
    }, completion: completion)
  }
}

MyViewController ,當我像這樣調用動畫方法時,會發生segue,但動畫不會:

myButton.animate(duration: 0.25) { _ in
  self.performSegue(withIdentifier: "mySequeIdentifier", sender: sender)
}

我注釋掉了self.performSegue以確保該segue在情節self.performSegue沒有硬接線,並確認不是。

我還嘗試使用以下代碼聲明動畫功能:

func animate(duration: TimeInterval, completion: @escaping (Bool)->Void?) {
    UIView.animate(withDuration: duration, delay: 0.0, usingSpringWithDamping: 0.2, initialSpringVelocity: 6.0, options: .allowUserInteraction, animations: {
      self.transform = .identity
    }, completion: completion as? (Bool) -> Void)
}

使用該代碼,什么都不會發生。 甚至沒有崩潰。

感謝您的閱讀。 我歡迎您提出的建議:我的錯誤所在。

好吧,這不是動畫,因為我認為您忘記了在調用擴展方法之前為按鈕提供初始轉換值。

  myButton.transform = CGAffineTransform(scaleX: 1.2, y: 1.2)
myButton.animate(duration: 0.25) { _ in
  self.performSegue(withIdentifier: "mySequeIdentifier", sender: sender)
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM