为啥子视图一直停留在底部而不是根据父 UIView 高度进行调整

Posted

技术标签:

【中文标题】为啥子视图一直停留在底部而不是根据父 UIView 高度进行调整【英文标题】:Why subview keep sticking to bottom and not adjusting according to parent UIView height为什么子视图一直停留在底部而不是根据父 UIView 高度进行调整 【发布时间】:2017-08-07 07:42:42 【问题描述】:

我创建了一个UIView 并像这样设置它的布局

在上面的UIView 中,我创建了另一个小的UIView 并设置了这样的布局

我这样改变UIView的高度

但小UIView 不会根据其父UIView 高度自动调整,它一直粘在底部。我希望那个小的UIView 始终坚持其父级底部,无论父级UIView 的高度是多少。我该怎么做?

【问题讨论】:

子视图在父视图中吗? 【参考方案1】:

viewBlue 的约束是 w.r.t. ViewContainer(VC 的观点)不是viewGreen

请执行以下操作之一:

    请检查情节提要中的视图层次结构。你的viewBlue 必须是viewGreen 的子视图。

    右击viewBlue并将其拖动到viewGreen。这意味着您对 viewBlue wrt viewGreen 给予约束。你会得到你可以给 wrt 的约束列表。现在给出满足您条件的适当约束。

【讨论】:

是的,它是一个子视图 @S.J 请检查更新答案。请显示您的视图层次结构。【参考方案2】:

您需要确保较大的 UIView 包含较小的视图,因为较小的 UIView 包含在较大的视图中,那么您的约束将基于较大的视图。

您的另一个非优选选项是给较小的 UIView 一个顶部约束而不是底部约束,然后它将附加到较大的 UIView。

【讨论】:

【参考方案3】:

确保您的subviewparent UIView 内,然后选择两个视图(子视图和父视图),根据给定的屏幕截图在 Xcode 的右下角单击添加新约束。您可以根据父视图的高度、前缘、后缘等放置子视图。

【讨论】:

【参考方案4】:

您必须将小视图放置在大视图中,然后将其底部约束赋予其父视图(大视图)。

每当您从大视图更改高度时,其中的小视图将移动并粘在其父视图底部。

【讨论】:

以上是关于为啥子视图一直停留在底部而不是根据父 UIView 高度进行调整的主要内容,如果未能解决你的问题,请参考以下文章

UIView 事件应用约束并设置子视图宽度

ConstraintLayout:第二个视图捕捉到父视图而不是自定义视图的底部

更改父(UIView)大小时布局不更改

为啥子div的边距会影响父div的边距? [复制]

为啥子视图控制器占据整个屏幕?

父视图外的 UIView 阴影