我的 UIView 内部有动态数量的 View ,并且还有背景颜色。我试图将 UIView 塞入所有项目周围,但它不起作用。
[self sizeToFit]
似乎在 UILabel 上工作得很好,但在 UIView 上却不行。
我知道我可以通过循环所有 subview 来手动计算面积,但这对于这样的事情来说似乎太多了。
我希望有人知道更简单的方法..谢谢
最佳答案
更新
如果您使用自动布局,则可以使容器 View 与其 subview 紧密配合。在容器与其 subview 之间设置约束,并在 subview 与容器的 super View 之间设置约束,但不要在容器与其 super View 之间设置约束。
原版
没有内置支持自动收缩环绕其 subview 的 View 。
sizeToFit
该方法的工作原理是发送 [self sizeThatFits:self.bounds.size]
,然后根据 sizeThatFits:
返回的大小调整自身大小.
UILabel
覆盖 sizeThatFits:
方法来计算其字体中文本的大小。
您需要定制UIView
子类化和覆盖sizeThatFits:
。这很简单:
- (CGSize)sizeThatFits:(CGSize)size {
CGRect rect = CGRectZero;
for (UIView *subview in self.subviews)
rect = CGRectUnion(rect, subview.frame);
return rect.size;
}
关于ios真空包裹UIView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9542586/