我的目标是单击按钮切换contentMode:带有动画的scaleAspectFit和scaleAspectFill。
@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()
}
}
}
但对我的目标没有效果。请帮我解决,谢谢柬埔寨。
最佳答案
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)
}
产生: