我正在尝试设置UILabel的动画,它在视图中垂直和水平居中,以便从顶部开始向上40点。
由于这是在多个设备/屏幕尺寸上我不认为我可以使用顶部约束,因为这些项目不一定在正确的位置开始,同样不会一个“常量”值,可以在所有设备高度上使用
最好的解决方法是什么?我最好有2个约束,1个用于垂直中心开始,然后一个用于动画结束时的顶部位置,然后在动画中将它们切换出来?
到目前为止,我只有一个IBOutlet用于我的centerY约束,我试图像这样覆盖:
labelYConstraint = NSLayoutConstraint.init(item: titleLabel, attribute:NSLayoutAttribute.centerY , relatedBy: .equal, toItem: view, attribute: NSLayoutAttribute.top, multiplier: 0, constant: 40)
UIView.animate(withDuration: 2.0) {
self.view.layoutIfNeeded()
}
任何人都能成功实现类似目标吗?
答案 0 :(得分:0)
您需要先停用先前设置的约束:
labelYConstraint.active = false
labelYConstraint = NSLayoutConstraint.init(item: titleLabel, attribute:NSLayoutAttribute.centerY , relatedBy: .equal, toItem: view, attribute: NSLayoutAttribute.top, multiplier: 0, constant: 40)
view.addConstraint(labelYConstraint)