动画不适用于自动布局(swift)

动画不适用于自动布局(swift),swift,xcode,animation,uiimageview,autolayout,Swift,Xcode,Animation,Uiimageview,Autolayout,每当我尝试使用自动布局在屏幕上设置对象动画时,就会出现很多问题。当我尝试设置UIImageView的动画时,它将复制对象,而不是转换到下一个图像。以下是布局的代码: icon.topAnchor.constraint(equalTo: circle.bottomAnchor, constant: 10).isActive = true icon.centerXAnchor.constraint(equalTo: circleView.centerXAnchor).isActive

每当我尝试使用自动布局在屏幕上设置对象动画时,就会出现很多问题。当我尝试设置UIImageView的动画时,它将复制对象,而不是转换到下一个图像。以下是布局的代码:

    icon.topAnchor.constraint(equalTo: circle.bottomAnchor, constant: 10).isActive = true
    icon.centerXAnchor.constraint(equalTo: circleView.centerXAnchor).isActive = true
    icon.widthAnchor.constraint(equalToConstant: 40).isActive = true
    icon.heightAnchor.constraint(equalToConstant: 40).isActive = true 
以下是动画的代码:

private func animateIcon(){
    UIView.transition(with: icon,
                      duration: 0.75,
                      options: .transitionCrossDissolve,
                      animations: { self.icon.image = UIImage(named: "CultureIcon") },
                      completion: nil)
}
当我使用UIImageView的帧将其添加到屏幕时,动画完全按照预期工作

编辑:我想我找到了问题所在。我在viewDidLayoutSubviews()中调用该视图的设置函数。一旦我从那里删除了函数,转换就开始了

然而,我也在使用@AmberK提供的功能,这可能是解决方案的一部分

试试看

private func animateIcon(){
self.icon.image = UIImage(named: "CultureIcon")
UIView.transition(with: icon,
                  duration: 0.75,
                  options: .transitionCrossDissolve,
                  animations: { self.view.layoutIfNeeded() },
                  completion: nil)
}

编辑:更正了调用
animateIcon
函数的格式?@ivarun我为UIImageView所在的视图创建了一个点击手势,并从那里调用了该函数。不幸的是,它不起作用。转换工作正常,但视图中的对象仍会重复。