使用动态高度将视图固定到底部

Posted

技术标签:

【中文标题】使用动态高度将视图固定到底部【英文标题】:Pinning a view to the bottom with dynamic height 【发布时间】:2016-09-20 05:09:56 【问题描述】:

我有一个 UILabel,它可以有可变数量的行数和高度。我想将这个标签固定到我的视图底部,如下所示:

如果文本强制标签展开,我希望标签与视图底部保持相同的高度(大约显示一行​​文本),但允许标签向下展开(它在滚动视图中)。我当然可以将 UILabel 固定在屏幕顶部,但是根据屏幕大小,这会产生不同的结果。我怎样才能达到这个结果? IB可以吗?还是我必须以编程方式进行?

【问题讨论】:

显示您添加到滚动视图的视图层次结构和约束。 只需将其固定在底部,左右。给它一个 numberOfRows 为 0 并保留高度。这应该工作 @kex 里面有什么?请向我们展示视图层次结构。 @Mr.UB 我是的。刚刚接受了下面的答案。谢谢 【参考方案1】:

您可以将标签固定到顶部(将滚动的内容视图的顶部),然后为将标签固定到顶部的约束创建和输出(或者只是以编程方式创建它以获得引用)

一旦你有了参考,只需在 viewDidLoad 中将约束的常量设置为屏幕的高度。

constraint.constant = UIScreen.mainScreen.bounds.height - heightFromBottom

【讨论】:

【参考方案2】:

我通过以下步骤实现了这一点:

    获取滚动视图并将约束(顶部、底部、尾部、前导)= 0 添加到 Superview。

    在 Scroll 内添加一个 UIView 并向 Scroll View 添加约束(顶部、底部、尾随、前导)= 0。

    设置 UIView 的高度和宽度约束等于 Superview(即 Main View、self.view)。

    选择 UIView 的高度约束并将其优先级设置为750

    在 UIView 的底部添加一个 Label 并将其约束(底部、顶部、尾随和前导)设置到 UIView。

    设置标签greater than equal to的高度。 (您已经这样做了,虽然我们不需要这样做)。

    最后一步:选择Label的顶部约束并将其优先级设置为250

Link to the project

【讨论】:

以上是关于使用动态高度将视图固定到底部的主要内容,如果未能解决你的问题,请参考以下文章

uiscrollview 不能滚动到底部

SwiftUI 将部分列表固定到底部

Material UI 卡片内容高度/卡片内容固定到底部

拖动到弹出视图控制器会导致固定到底部的按钮跳转(使用标签栏)

uiscrollview无法滚动到底部

如何将菜单动态添加到底部导航视图?