我在屏幕顶部有父视图让故事板中的TOPVIEW包含一些固定高度子视图
TOPVIEW后面的和scrollview
看起来像
UIVIEW
- TOPVIEW (128) FIXED
- SCROLLVIEW
当键盘出现时,我想将顶视图设置为0,这就是为什么我将IBOUTLET
设为0并将其设置为0并将顶视图剪辑限制为YES
但是topview子视图的约束中断(视图之间的垂直空间等)
我的问题是如何解决由子视图中的父视图高度引起的约束中断,
我知道我们可以为打破限制设置优先级低,但还有其他方法吗?
提前致谢
答案 0 :(得分:1)
将顶部视图和滚动视图放在垂直UIStackView
中。如果要隐藏顶视图,请设置topView.hidden = true
。堆栈视图将自动向上移动滚动视图的顶部,以便填充顶视图所在的空间。
答案 1 :(得分:1)
这种情况正在发生,因为您已经为TOPVIEW设置了固定高度约束,并且您正在动态更改该约束常量值,因此自动布局必须打破约束。
如果您已经为TOPView和ScrollView设置了理想约束,那么您只需要在约束中进行两次或三次更改,如下所示:
第1步:
将高度约束(128)关系从等于更改为小于或等于,如下图所示,
第2步:
如果您已按照链接here中的说明正确设置了scrollView约束,那么您只需进行一项更改即可更改 BottomSpace约束与等于<的关系/ strong>到大于或等于位于scrollView底部的组件(在scrollView内部)。
第3步:
创建TopView高度约束的出口,并将其常量值从128切换为0,反之亦然。
就是这样,它应该按预期工作。
希望它对你有所帮助。
<强>更新强>
或者你也可以采取其他方式,如下所述,
第1步:
将TOPView底部TOPView内组件的bottomSpace约束优先级更改为999。
第2步:
从属性检查器中选择“剪辑子视图”属性,如下图所示
为了证明这一点,我做了一个小型演示应用程序,你可以看到下面的结果,
Orange View将TopSpace的SuperView,Leading和TrailingSpace设置为SuperView和Height约束。
Blue View有TopSpace,Leading,TrailingSpace和BottomSpace到SuperView即OrangeView,BottomSpace约束的优先级为999.它有高度约束。
这样就可以了。