根据内容自动设置自定义 UIView 的高度?
Automatically set height of custom UIView based on its contents?
在问这个问题之前我已经花了很多时间阅读其他问题,但还没有设法解决这个问题——希望有人能提供帮助。
我有一个自定义警报视图,一个 UIView
子类。我试图让它进入一种状态,它的宽度是固定的,它的高度根据它的两个标签(title
和 message
)的高度动态增长,以及动态数量的操作按钮它可以设置为。
我已经使用 AutoLayout 来设置控件,效果很好,但现在我仍然在其初始化程序中手动设置视图本身的框架。
我需要做的是让视图的高度由我的两个标签和 n 个按钮的高度加上它们之间的间距来计算。
我已经尝试为我的视图提供一个 intrinsicContentSize
,但是该方法从未被调用过,它甚至没有要求它,所以我不知道如何继续。
总结一下:我可能需要 iOS9 的 UIStackView
,但我没有那么奢侈,所以我需要将类似的东西烘烤成 iOS 7 / 8。我看过 OAStackView
但我不想使用外部依赖项。
快速思考一下:您是否尝试过在 Interface Builder 中创建视图?给它一个固定的宽度,优先级:1000。不添加高度约束,但在其父视图中垂直居中视图。
然后设置View的垂直内容拥抱优先级和垂直内容压缩阻力优先级为1000。
这应该会导致视图根据其子视图计算自己的高度。您只需要确保子视图以定义高度的方式绑定到父视图,没有任何歧义。
在问这个问题之前我已经花了很多时间阅读其他问题,但还没有设法解决这个问题——希望有人能提供帮助。
我有一个自定义警报视图,一个 UIView
子类。我试图让它进入一种状态,它的宽度是固定的,它的高度根据它的两个标签(title
和 message
)的高度动态增长,以及动态数量的操作按钮它可以设置为。
我已经使用 AutoLayout 来设置控件,效果很好,但现在我仍然在其初始化程序中手动设置视图本身的框架。
我需要做的是让视图的高度由我的两个标签和 n 个按钮的高度加上它们之间的间距来计算。
我已经尝试为我的视图提供一个 intrinsicContentSize
,但是该方法从未被调用过,它甚至没有要求它,所以我不知道如何继续。
总结一下:我可能需要 iOS9 的 UIStackView
,但我没有那么奢侈,所以我需要将类似的东西烘烤成 iOS 7 / 8。我看过 OAStackView
但我不想使用外部依赖项。
快速思考一下:您是否尝试过在 Interface Builder 中创建视图?给它一个固定的宽度,优先级:1000。不添加高度约束,但在其父视图中垂直居中视图。
然后设置View的垂直内容拥抱优先级和垂直内容压缩阻力优先级为1000。
这应该会导致视图根据其子视图计算自己的高度。您只需要确保子视图以定义高度的方式绑定到父视图,没有任何歧义。