2017-10-12 92 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

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