在问这个问题之前,我花了很多时间阅读其他问题,还没有设法解决问题 - 希望有人可以提供帮助。
我有一个自定义警报视图,一个UIView
子类。我试图让它进入一个宽度固定的状态,它的高度根据两个标签(title
和message
)的高度动态增长,动态数量的动作按钮它可以用。
我已经使用AutoLayout来设置控件,它工作正常,但是现在我仍然在其初始化器中手动设置视图的框架。
我需要做的是让视图的高度由我的两个标签和n个按钮的高度以及它们之间的间距来计算。
我已尝试为我的观点提供intrinsicContentSize
,但该方法永远不会被调用,甚至不会要求它,所以我很难理解如何继续。
总结一下:我可能需要iOS9的UIStackView
,但我没有那么奢侈,所以我需要在iOS 7/8中加入类似的东西。我看过OAStackView
但是我我宁愿不使用外部依赖。
答案 0 :(得分:2)
快速思考:您是否尝试在Interface Builder中创建视图?使用Priority:1000赋予固定宽度。不添加高度约束,但将视图垂直居中于其超视图中。
然后将View的垂直内容拥抱优先级和垂直内容压缩阻力优先级设置为1000.
这会导致视图根据其子视图计算自己的高度。您只需要确保子视图以定义高度的方式绑定到超级视图,而不会产生任何歧义。