如何在UIView动画期间更新图像视图

时间:2017-04-16 20:13:26

标签: ios swift uiview uiviewanimation

我想在动画期间更改image中的imageView。我有一个imageView,我的动画会降低imageView。在此动画期间,我需要将新照片加载到此imageView(从互联网下载后),但在我尝试这样做的任何时候imageView 都会回到第一个位置。如何在没有此问题的情况下加载新图像?

我的代码:

viewDidLoad

中加载图片功能
override func viewDidLoad() {
    super.viewDidLoad()

    viewModel.downloadImage({ [weak self] image in
        DispatchQueue.main.async {
            self?.userImageView.image = image
        }
    })
}

我从viewDidAppear

开始的动画方法
override func viewDidAppear(_ animated: Bool) {
    super.viewDidAppear(animated)

    UIView.animate(withDuration: 5, delay: 0, options: [.curveEaseOut, .allowAnimatedContent, .allowUserInteraction], animations: { [unowned self] _ in
            self.userProfileImageView.center.y = 300
        }, completion: nil) 

}

1 个答案:

答案 0 :(得分:1)

我猜你的图像视图使用自动布局约束定位在故事板中。当您更改图像视图的图像时,会导致布局发生;这意味着autolayout约束接管并将图像视图定位在动画开始之前的位置。

道德很简单:如果该视图由自动布局约束定位,请勿尝试为视图center(或framebounds)设置动画。您可以为其约束设置动画。