我想要实现的是,当我点击按钮,动画帧被调整大小,这样底线位置不会改变,高度将减少。这部分正在发生。我也希望上面的标签向下移动与框架的上边界和下标签保持不变。因此,我在IB中设置了约束,使下标签的垂直空间为20个像素,优先级为1000。
- (IBAction)tapTap:(id)sender {
//[self.containerView layoutIfNeeded];
[UIView animateWithDuration:1.5 animations:^{
CGRect rect = CGRectOffset(self.containerView.frame, 0, 30);
rect.size.height -= 30;
self.containerView.frame = rect;
//[self.containerView layoutIfNeeded];
} completion:NULL];
}较低的标签也是动画,不会停留在原地。我最好的猜测是,在尝试不起作用的layoutIfNeeded之后,我不能在动画框架中依赖约束。如果这是真的,什么才是解决办法?

发布于 2014-03-03 14:53:48
AutoLayout的第一条规则:不要触摸框架(或中心).
看起来你已经找到了答案,但是方法是保持对你想要改变的约束的引用。例如,如果要向上和向下移动视图,则存储一个设置视图垂直位置的垂直约束。现在,当您动画这个约束,视图将与它动画。
self.topConstraint.constant = 50;
// etc...您可以通过CTRL创建对约束的属性引用--拖动它们就像使用按钮、标签等.
https://stackoverflow.com/questions/22065451
复制相似问题