使用[[UIView alloc] init]创建容器视图;然后我使用autolayout将其他UIViews,如UIButton,UILabel,UIImageView放入其中。
我的目标是让一个容器使用其“intrinsicContentSize”,而另一个容器占用剩余的空间。但事实证明我有3个问题,
我如何实现目标
更新:我弄清楚为什么systemLayoutSizeFittingSize总是返回0,如get container size所述,但还没有实现我的目标
答案 0 :(得分:0)
子类UIView
子类UIView并在里面添加所有子视图...然后覆盖intrinsecContentSize
并返回容器的大小。
override func intrinsicContentSize() -> CGSize {
return CGSizeMake(0, self.subview1.intrinsicContentSize().width + self.subview2.intrinsicContentSize().width)
}
现在intrinsecContentSize
会为您提供正确的价值。在使用intrinsecContentSize
更新容器内的内容之前,请不要忘记使invalidateIntrinsicContentSize()
无效。
使用UIStackView或OAStackView
如果您的应用仅支持iOS9 +,则可以使用UIStackView,否则您可以使用OAStackView。