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

标签 swift xcode animation uiimageview autolayout

每当我尝试为使用自动布局编程到屏幕上的对象设置动画时,就会出现很多问题。当我尝试为 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() 中调用该 View 的设置函数。一旦我从那里删除功能,转换就会起作用。

但是,我也在使用@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)
}

编辑:更正了格式

关于swift - 动画不适用于自动布局(快速),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50195412/

相关文章:

swift - 在带有 M1 芯片的 Xcode 12 的范围内找不到类型 '*'

ios - yarn 运行 ios - 错误 : Cannot find module - React Native

ios - 在 XCode 5 中使用多个 Assets 目录的问题

javascript - jQuery 动画颜色变化

android - 圆形比例动画

android - AppRTC:iOS到Android的通话无法正常工作

swift - 动态改变 SwiftUI 的 VStack 的顺序

ios - UICollectionView 单元格自动调整大小

firefox - 面具在 Gecko 中不起作用

ios - 在自定义 UITableViewCell 中设置元素的角半径