动画中心垂直约束从顶部

时间:2016-10-04 17:44:52

标签: ios nslayoutconstraint

我正在尝试设置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()
    }

任何人都能成功实现类似目标吗?

1 个答案:

答案 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)