我正在修改UIScrollView中许多视图之一的现有约束的优先级。结果只会更改其中一个子视图的位置。所有剩余的子视图保持其原始大小和位置,我不修改涉及它们的约束。我正在修改约束下面的所有子视图上的布局传递。为什么会这样?
原始问题得到的回应很少,可能是因为详细信息,但我可以在那里找到我如何设置约束的代码:Scroll hesitation with floating view in UIScrollView using auto layout
我有三组约束:一组不会改变,一组适用于子视图,它定义它相对于其兄弟的滚动视图中的位置,以及一些适用于浮动它的子视图的约束scrollview并将其固定在其父级的顶部。
要做到这一点,我基本上将每个子视图的前沿和后端固定到滚动视图,并将每个子视图固定在上一个子视图的顶部(如果是第一个,则为滚动视图),并将底部固定到下一个子视图(或滚动视图,如果是最后一个) )。这些约束的优先级为750.
我还添加了约束来将子视图的前导,顶部和尾部边缘固定到scrollview的父级,基本上将其从内联中拉出并将其浮动到顶部。我还添加了约束来将目标子视图的前一个和下一个兄弟节点相互固定,从而计算目标视图的高度。其意图是将所有内容保持在同一位置。这些约束的优先级为250.
当我决定想要子视图浮动时,我会交换这些约束的优先级(仅适用于目标子视图的优先级,而不是所有约束),以便应用优先级较低的约束。具体来说,我降低了约束的优先级:将目标子视图的上边缘固定到其上一个兄弟,目标子视图的下边缘到其下一个兄弟,以及目标子视图的前端和后端到滚动视图。我增加了约束的优先级:将目标子视图的前导,顶部和尾部边缘固定到scrollview的父级。