从下面的图片中,当用户点击 view1 时,我让 view2 和 view3 向下滑动到页脚,通过将 view3 的约束常量与页脚设置为 0(ish)来有效地拉动。我的 xib 设置了约束,如第一张图片所示。其中最重要的 2 个 [对我来说现在] 是 view1View2 约束和 view3Footer 约束
为了实现向下滑动,我最终为 view1view2 约束设置了低优先级,为 view3Footer 约束设置了更高的优先级,然后在 animateWithDuration 中更新 view3Footer 约束常量
我的问题是让 view2 和 view3 向后滑动,如果我使用相同的方法,我可以通过将 view1view2 约束常量设置为 2 来实现。
我相信上面上滑的问题是 view3Footer 约束比 view1View2 约束具有更高的优先级,优先级似乎只是只读的,所以我不能专门更改这些。我知道在设置约束时我只要求视图定位。
...我相信我可能完全使用了错误的方法...
我是否以正确的方式解决这个问题?我是否必须获取约束对象 IBOutlet 并重写它们?如果是这样,我会重写优先级吗?我是否应该将 >= 用于具有相同优先级的常量,这似乎不起作用。下面是我的简单动画代码,虽然不多,但除了手势识别器之外,设置主要在 xib
很感谢任何形式的帮助。谢谢,史蒂夫
对于向下滑动:
[UIView animateWithDuration:0.9 animations:^{
_view3FooterConstraint.constant=2;
[self.view layoutIfNeeded];
} completion:^(BOOL finished){}];
UPDATE 也试过这个设置优先级相等——不能再实现向下滑动
_view3FooterConstraint.constant=2;
[self.view setNeedsUpdateConstraints];
[UIView animateWithDuration:0.9 animations:^{
[self.view layoutIfNeeded];
} completion:^(BOOL finished){}];
对于上滑:
[UIView animateWithDuration:0.9 animations:^{
_view1View2Constraint.constant=2;
[self.view layoutIfNeeded];
} completion:^(BOOL finished){}];