2017-10-12 111 views
1

我的目標是當我點擊按鈕切換contentMode:scaleAspectFit & scaleAspectFill with animation。Swift 3/4如何動畫UIImageView的contentMode

@IBAction func toggleContentModeAction(_ sender: UIButton) { 
    sender.isSelected = !sender.isSelected 
    if sender.isSelected { 
     UIView.animate(withDuration: 0.3) { 
      self.popImageView.contentMode = .scaleAspectFit 
      self.view.layoutIfNeeded() 
     } 
    }else { 
     UIView.animate(withDuration: 0.3) { 
      self.popImageView.contentMode = .scaleAspectFill 
      self.view.layoutIfNeeded() 
     } 
    } 
} 

但對我的目標沒有效果。請爲我修好,感謝柬埔寨。

+0

哇,但它不適合我的目標,但它可以完美使用。非常感謝。 –

回答

2

contentMode本身不是一個動畫屬性。但是您可以在transition(with:duration:options:animations:completion:)的兩個不同的視圖呈現之間進行動畫處理,例如

@IBAction func didTapButton(_ sender: UIButton) { 
    let contentMode: UIViewContentMode = imageView.contentMode == .scaleAspectFill ? .scaleAspectFit : .scaleAspectFill 

    UIView.transition(with: imageView, duration: 1, options: .transitionCrossDissolve, animations: { 
     self.imageView.contentMode = contentMode 
    }, completion: nil) 
} 

國債收益率:

enter image description here

+0

完美地工作。非常感謝。 –