在切换到自动布局之前,将动画应用于 View 很容易 - 您只需更改 UIView.layoutWithDuration:
中的框架。当约束出现时,事情变得更加复杂。为使用自动布局的 View 设置动画的最常见方法是保留对要更改的约束的引用,然后设置常量值,但这很难设计,并且如果它们的其他 View 可能会受到影响约束取决于您要设置动画的 View 的位置。
一定有更好的方法来做到这一点。我希望能够执行类似 view.translateFrom(direction: .left, distance: 30, duration: 0.3, delay: 0)
的操作。
最佳答案
最终您会希望使用约束来实现简单的动画。最重要的原因是 -
“选择任何其他方式都是逆流而上”
如果您不想使用@IBOutlets 为您想要设置动画的约束“乱扔垃圾”,那么在大多数情况下,您可以在代码中获取对相关约束的引用:
方便的扩展
import UIKit
extension UIView {
func constraint(attribute: NSLayoutAttribute) -> NSLayoutConstraint? {
var constraint : NSLayoutConstraint? = .none
for potentialCenterXConstraint in self.constraints {
if potentialCenterXConstraint.firstAttribute == attribute {
constraint = potentialCenterXConstraint
break
}
}
return constraint
}
}
客户端代码使用
if let centerXConstraint = someView.constraint(attribute: .centerX) {
// Do something funky with centerXConstraint
}
关于ios - 如何在不依赖大量约束引用和样板代码的情况下使用自动布局为 View 定义动画?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39243760/