我有一个嵌套视图,我在某个动作上完全动画出框架。为此,我更新了动画块中约束的常量。
[UIView animateWithDuration:.5 animations:^{
self.categoriesTableViewConstraintToBottom.constant = [UIScreen mainScreen].bounds.size.height;
self.categoriesTableViewConstraintToTop.constant = [UIScreen mainScreen].bounds.size.height;
[self.view layoutSubviews];
}, completion: nil];
基本上,这两个约束只是将它绑定到父视图(全屏)的顶部和底部。显然,我不能在不更改另一个约束的情况下更改其中一个约束,否则布局不能令人满意。
这里奇怪的部分是我必须按照上面显示的顺序更改这些。如果我以其他顺序更新常量,则会引发“满足”错误。
所以:
- 为什么顺序很重要?
- 如果在我们更新所有约束之前它们会发生冲突,我们是否应该在更改约束时从技术上删除它们?(他们是否因为某种原因立即评估,而不是等待
layoutSubviews
orlayoutIfNeeded
?