我正在尝试使用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
的位置而不影响其宽度/高度?
答案 0 :(得分:2)
您应该删除约束:
垂直空间(表示View与ViewController视图底部之间的空间)
因为您不希望高度发生变化(您将其固定)并且您正在使用其他约束指定x(中心约束)和y(其他顶点约束)位置,因此不需要。
您的Horizontal Space
约束也可能不是必需的(因为您有一个Center X Alignment
约束) - 可能需要水平空间,但更有可能在视图中这个约居中心。