本文介绍了Swift 3/4 如何为 UIImageView 的 contentMode 设置动画的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我的目标是当我点击按钮切换 contentMode: scaleAspectFit &scaleAspectFill 使用动画.

 @IBAction func toggleContentModeAction(_ sender: UIButton) {sender.isSelected = !sender.isSelected如果 sender.isSelected {UIView.animate(withDuration: 0.3) {self.popImageView.contentMode = .scaleAspectFitself.view.layoutIfNeeded()}}别的 {UIView.animate(withDuration: 0.3) {self.popImageView.contentMode = .scaleAspectFillself.view.layoutIfNeeded()}}}

但对我的目标没有效果.请帮我解决,感谢柬埔寨.

解决方案

contentMode 本身不是可动画的属性.但是您可以使用

My goal is when I click on button to toggle 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()
        }
    }
}

but no effective to my goal. Please fix for me, thanks from Cambodia.

解决方案

The contentMode, itself, is not an animatable property. But you can animated between two different renditions of a view with transition(with:duration:options:animations:completion:), e.g.

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

That yields:

这篇关于Swift 3/4 如何为 UIImageView 的 contentMode 设置动画的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

08-31 01:26