根据内容自动设置自定义 UIView 的高度?

Automatically set height of custom UIView based on its contents?

在问这个问题之前我已经花了很多时间阅读其他问题,但还没有设法解决这个问题——希望有人能提供帮助。

我有一个自定义警报视图,一个 UIView 子类。我试图让它进入一种状态,它的宽度是固定的,它的高度根据它的两个标签(titlemessage)的高度动态增长,以及动态数量的操作按钮它可以设置为。

我已经使用 AutoLayout 来设置控件,效果很好,但现在我仍然在其初始化程序中手动设置视图本身的框架。

我需要做的是让视图的高度由我的两个标签和 n 个按钮的高度加上它们之间的间距来计算。

我已经尝试为我的视图提供一个 intrinsicContentSize,但是该方法从未被调用过,它甚至没有要求它,所以我不知道如何继续。

总结一下:我可能需要 iOS9 的 UIStackView,但我没有那么奢侈,所以我需要将类似的东西烘烤成 iOS 7 / 8。我看过 OAStackView 但我不想使用外部依赖项。

快速思考一下:您是否尝试过在 Interface Builder 中创建视图?给它一个固定的宽度,优先级:1000。不添加高度约束,但在其父视图中垂直居中视图。

然后设置View的垂直内容拥抱优先级和垂直内容压缩阻力优先级为1000。

这应该会导致视图根据其子视图计算自己的高度。您只需要确保子视图以定义高度的方式绑定到父视图,没有任何歧义。