iOS Swift UIButton中ImageView的animationImages動畫執行完畢後,圖示變暗

LinXunFeng發表於2017-12-14

情況

變暗
貼出重要程式碼

// 設定按鈕圖片動畫陣列
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)
複製程式碼

iOS   Swift UIButton中ImageView的animationImages動畫執行完畢後,圖示變暗

那知道原因之後就很好解決了

解決方案

方案一:設定按鈕的高亮圖片

將按鈕的高亮圖片與普通狀態下的一致即可。這裡就再贅述了

方案二:adjustsImageWhenHighlighted = false

在UIButton中有這麼一個屬性

adjustsImageWhenHighlighted
複製程式碼

檢視官方文件的說明

iOS   Swift UIButton中ImageView的animationImages動畫執行完畢後,圖示變暗
當該屬性設定為true時,按鈕在高亮狀態下,圖片會繪製成高亮(前提是沒有手動設定高亮圖片)。並且該值的預設值為true 所以我們也可以將屬性adjustsImageWhenHighlighted設定為false,不讓系統自動幫我們設定高亮狀態下顯示的圖片即可。

效果

完美

附上相關專案:Swift 3.0 高仿微信

相關文章