Autolayout动画UIView的x / y位置,而不改变宽度/高度

时间:2014-03-07 15:45:58

标签: ios objective-c autolayout nslayoutconstraint

我正在尝试使用Autolayout和约束代替带帧的动画。在我的项目中,我在屏幕顶部附近有UIView,我正试图直接向下(y位置)制作动画。我知道我必须修改约束常量值,但这样做会降低我视图的高度,而不是像我想要的那样“向下”推动它。这是我的代码:

self.topConstraint.constant = 180;

[UIView animateWithDuration:0.5f animations:^{
    [self.theView layoutIfNeeded];
} completion:^(BOOL finished) {

}];

topConstraint是ViewController视图顶部与theView之间的垂直空间约束。

theView的其他限制包括:

  • 中心X对齐

  • 横向空间

  • 垂直空间(self.topConstraint

  • 垂直空间(表示theView与ViewController视图底部之间的空间)

  • 固定宽度

  • 固定高度

如何修改约束值以简单地更改theView的位置而不影响其宽度/高度?

1 个答案:

答案 0 :(得分:2)

您应该删除约束:

  

垂直空间(表示View与ViewController视图底部之间的空间)

因为您不希望高度发生变化(您将其固定)并且您正在使用其他约束指定x(中心约束)和y(其他顶点约束)位置,因此不需要。

您的Horizontal Space约束也可能不是必需的(因为您有一个Center X Alignment约束) - 可能需要水平空间,但更有可能在视图中这个约居中心。