情況
貼出重要程式碼// 設定按鈕圖片動畫陣列
voiceButton.imageView?.animationImages = [
#imageLiteral(resourceName: "message_voice_sender_playing_1"),
#imageLiteral(resourceName: "message_voice_sender_playing_2"),
#imageLiteral(resourceName: "message_voice_sender_playing_3")
]
複製程式碼
// 開始動畫
voiceButton.imageView?.startAnimating()
複製程式碼
// 停止動畫
voiceButton.imageView?.stopAnimating()
複製程式碼
原因
這個按鈕在結束動畫之後之所以會變暗,是因為它在動畫結束之後自動顯示為高亮圖片,不信?那隻好上證據了~
// 設定語音按鈕的高亮圖片
voiceButton.setImage(#imageLiteral(resourceName: "message_voice_sender_normal"), for: .highlighted)
複製程式碼
那知道原因之後就很好解決了
解決方案
方案一:設定按鈕的高亮圖片
將按鈕的高亮圖片與普通狀態下的一致即可。這裡就再贅述了
方案二:adjustsImageWhenHighlighted = false
在UIButton中有這麼一個屬性
adjustsImageWhenHighlighted
複製程式碼
檢視官方文件的說明
當該屬性設定為true時,按鈕在高亮狀態下,圖片會繪製成高亮(前提是沒有手動設定高亮圖片)。並且該值的預設值為true 所以我們也可以將屬性adjustsImageWhenHighlighted設定為false,不讓系統自動幫我們設定高亮狀態下顯示的圖片即可。效果
附上相關專案:Swift 3.0 高仿微信