首先,我必须提到我在一个新项目中重复了约束并且无法复制问题。问题出现在我已经工作了几个月的复杂故事板项目中。
为简单起见,这基本上就是问题:
我在View Controller内部的默认View中有一个Container View。容器视图对其超级视图的顶部,底部和尾部边缘有约束。我在superview和容器视图之间连接了两个“相等宽度”约束。一个等于superview,另一个与superview成比例,约束中有0.9乘数。
我有一个叠加在容器视图顶部的按钮,它在2个“相等/比例宽度”之间交替显示(为了简单起见,我当前删除了View Controller中的所有其他对象,试图找出什么是导致问题...
当按钮将“等宽”约束切换到0.9比例宽度约束时,它会“推动”容器视图远离尾缘(12点),同时它还将容器视图缩小10%,如期望的。
我一直在努力工作几个小时,到目前为止无济于事......出于绝望,我添加了一个额外的后缘限制来打开和关闭,额外的12点来补偿当时的转变比例宽度打开。默认尾随(超级视图)约束设置为-20,因为我将它增加到-30,-31,-31.5它越来越接近向右看,但是当我把它设为常数-32时,它再次跳起,大约12到20点,落后于边缘!我知道这不是一个试图解决这个问题的好方法,但我想提一下,以防它可能是一个比我更了解的问题的线索。
感谢您提供的任何帮助!
更新:
问题似乎源于容器视图中嵌入的VC中的冲突。嵌入式VC的高度是720,而它的容器是720 ......但即使我改变这些高度以匹配,无论哪种方式,我都会遇到同样的问题......
如果我删除嵌入式VC并只使用容器视图,问题似乎就消失了,但这不是解决方案,因为我需要嵌入式VC的内容......
最后一点,我有一个类似的方法,按下按钮可以改变嵌入式VC的高度,但没有问题..
答案 0 :(得分:0)
之前我遇到类似的约束问题,没有看到故事板,我无法确定原因,但您可以尝试以下方法:
如果两者都不是原因,还要检查按钮是否正在调用正确的操作。
在任何情况下,如果我的提示完全无效,您可能需要提供更多信息或屏幕上限,以显示视图及其限制,以便更好地了解您的问题。
答案 1 :(得分:0)
我解决了!
因此,正如我在更新中所怀疑的那样,问题源于容器视图与其嵌入式视图控制器之间的约束不同步的问题。在容器视图中,如上所述,对于superview的后缘有一个约束,对于我用一个按钮切换的宽度有2。嵌入式视图控制器的视图对其超级视图有一个主要的约束。一旦我删除了它并将其切换为尾随视图,问题就解决了!
获得的经验:如果要更改具有多个宽度或高度约束的容器视图,请确保在容器视图和嵌入视图的内容中具有相同的侧边约束(y轴,顶部或尾部的顶部或底部)对于x轴)。