Swift 3/4如何为UIImageView的contentMode制作动画

时间:2017-10-12 03:54:43

标签: ios swift uiimageview

我的目标是当我点击按钮切换contentMode:scaleAspectFit& scaleAspectFill with animation。

    @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()
        }
    }
}

但对我的目标无效。请帮我解决,谢谢柬埔寨。

1 个答案:

答案 0 :(得分:3)

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