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

时间:2015-06-26 09:09:53

标签: ios uiview autolayout

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

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

设置

我已经使用AutoLayout来设置控件,它工作正常,但是现在我仍然在其初始化器中手动设置视图的框架。

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

我已尝试为我的观点提供intrinsicContentSize,但该方法永远不会被调用,甚至不会要求它,所以我很难理解如何继续。

总结一下:我可能需要iOS9的UIStackView,但我没有那么奢侈,所以我需要在iOS 7/8中加入类似的东西。我看过OAStackView但是我我宁愿不使用外部依赖。

1 个答案:

答案 0 :(得分:2)

快速思考:您是否尝试在Interface Builder中创建视图?使用Priority:1000赋予固定宽度。不添加高度约束,但将视图垂直居中于其超视图中。

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

这会导致视图根据其子视图计算自己的高度。您只需要确保子视图以定义高度的方式绑定到超级视图,而不会产生任何歧义。