我有一個UIView
(「superview」),它有幾個UILabels
作爲子視圖,在Interface Builder中設置。我已經打開了Auto-Layout,可以將列表中的所有標籤一個接一個地正確放置。這很好。如何使我的超級視圖大小與Autolayout的子視圖大小相匹配?
我現在要做的是讓它使我的Superview垂直調整大小以匹配我所有標籤的高度,但我無法完全弄清楚如何做到這一點。
這是如何工作的?
我有一個UIView
(「superview」),它有幾個UILabels
作爲子視圖,在Interface Builder中設置。我已經打開了Auto-Layout,可以將列表中的所有標籤一個接一個地正確放置。這很好。如何使我的超級視圖大小與Autolayout的子視圖大小相匹配?
我現在要做的是讓它使我的Superview垂直調整大小以匹配我所有標籤的高度,但我無法完全弄清楚如何做到這一點。
這是如何工作的?
嘗試使用UIView方法sizeToFit
?
下面是使用可視化佈局的示例...因此忽略了translatesAutoresizingMaskIntoConstraints業務。
這依賴於容器視圖沒有任何高度約束的事實,它似乎依賴於視圖之間的間距。系統將調整視圖的大小以符合子視圖的要求。
- (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
self.backgroundColor = [UIColor redColor];
[self setTranslatesAutoresizingMaskIntoConstraints:NO];
_labelOne = [[UILabel alloc] init];
_labelOne.text = @"Banana";
_labelOne.backgroundColor = [UIColor blueColor];
[_labelOne setTranslatesAutoresizingMaskIntoConstraints:NO];
_labelTwo = [[UILabel alloc] init];
_labelTwo.text = @"Dinosaur";
_labelTwo.backgroundColor = [UIColor yellowColor];
[_labelTwo setTranslatesAutoresizingMaskIntoConstraints:NO];
[self addSubview:_labelOne];
[self addSubview:_labelTwo];
NSDictionary *views = NSDictionaryOfVariableBindings(_labelOne, _labelTwo);
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[_labelOne]|" options:0 metrics:nil views:views]];
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[_labelTwo]|" options:0 metrics:nil views:views]];
[self addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-10-[_labelOne(30)]-15-[_labelTwo(30)]-10-|" options:0 metrics:nil views:views]];
}
return self;
}
我知道基本的想法是讓你的子視圖的內在含量的大小通過確保在每個子視圖的垂直維中的內容壓縮性和內容擁抱約束沒有被覆蓋帶動上海華盈的高度您已添加更高優先級的約束。
當自動佈局打開時它工作嗎? – jbrennan
不知道,但我是這麼認爲的。試試吧,讓我們知道:) –
它什麼都不做。 – jbrennan