查看A通过在layoutSubviews中计算和设置其框架来布局其子视图。
视图B使用约束来布局它的子视图。
视图A包含许多视图B实例。
视图A在布局时需要知道其子视图的大小,因此它会在其上调用sizeThatFits:
。
查看B的高度取决于它的宽度。在我的示例中,它内部有一条多行UILabel
。
B应该如何实现它sizeThatFits:
,以便在传递给size
的{{1}}参数和帐户中的约束时返回正确的大小?
到目前为止我尝试/考虑的内容:
sizeThatFits:
- 不起作用,因为它没有考虑传递给它的确切大小。它不能用于指定精确的宽度,例如,当水平收缩时垂直生长的视图。它只提供最大压缩尺寸或最大尺寸。
systemLayoutSizeFittingSize:
- 据我所知,这是用于将信息 传递给 自动布局。我们想要的是从 自动布局获取信息 。
这就是我迄今为止的推理方式。如果我犯了错误,请纠正我。请帮助我,如果有人能指出我是如何完成的,我将非常感激!
编辑:此外,也许有一些完全不同的方法来做到这一点,甚至没有使用intrinsicContentSize
?我唯一的要求是我可以在"外部"中继续使用框架布局。视图(视图A)和内部视图中的自动布局" (见B)。
edit2:添加了一张图片来说明我必须解决的确切案例
edit3:忘了提,我需要支持iOS 7.0
答案 0 :(得分:0)
从图中可以看出,UIStackView可能是View A的更好方法吗?
https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIStackView_Class_Reference/
然后用一个边距约束,将View A UIStackView的底部偏移到最后一个View B的底部
答案 1 :(得分:0)
我会使用Autolayout。您仍然可以指定确切的大小和位置,只需使用约束而不是框架。