动态调整视图大小时(拖动动作)自动布局约束中断

Auto layout constraint breaks when resizing view dynamically (dragging motion)

我有一个视图夹在另外两个视图之间,中间视图的高度可以通过平移手势来改变。

我正在使用手势识别器获取触摸位置并将该值提供给中间视图的高度约束以使其动态调整大小。

一个问题是当触摸位置超出中间视图的边界并与顶视图或底视图重叠时,我收到警告:

Unable to simultaneously satisfy constraints ...

Will attempt to recover by breaking constraint

这并没有真正引起任何实际问题,但以防万一它可能引起大问题,我想知道是否

a) 使用高度约束动态改变高度是正确的 b) 有任何方法可以避免记录该警告

谢谢!

回答你的问题:

a) 是的,这是更新视图高度的正确方法

b) 是的,有一种方法可以消除警告

由于您的视图获得高度限制的负值,您可以添加一个高度检查,这样您就永远不会为其设置负值。然后,您将不再有错误日志。

不确定您是否也支持 iOS 7,但如果支持,应用很可能会因为布局错误而崩溃。

所以,我的建议是在更新约束的地方添加类似这样的内容:

[self.heightConstraint setConstant:MAX(0, value)];

祝你项目顺利!