3
我有四個標籤,其中一個在前一個下方堆疊,但其內容視圖的頂部與其基線對齊,而不是相互之間的垂直間距。自動佈局VFL:將水平約束中的所有尾部對齊
我這樣
[contentView addConstraint:[NSLayoutConstraint constraintWithItem:topFirstLabel_
attribute:NSLayoutAttributeBaseline
relatedBy:NSLayoutRelationEqual
toItem:contentView
attribute:NSLayoutAttributeTop
multiplier:1.0f
constant:20.0f]];
[contentView addConstraint:[NSLayoutConstraint constraintWithItem:topSecondLabel_
attribute:NSLayoutAttributeBaseline
relatedBy:NSLayoutRelationEqual
toItem:contentView
attribute:NSLayoutAttributeTop
multiplier:1.0f
constant:47.0f]];
[contentView addConstraint:[NSLayoutConstraint constraintWithItem:topThirdLabel_
attribute:NSLayoutAttributeBaseline
relatedBy:NSLayoutRelationEqual
toItem:contentView
attribute:NSLayoutAttributeTop
multiplier:1.0f
constant:70.0f]];
[contentView addConstraint:[NSLayoutConstraint constraintWithItem:topFourthLabel_
attribute:NSLayoutAttributeBaseline
relatedBy:NSLayoutRelationEqual
toItem:contentView
attribute:NSLayoutAttributeTop
multiplier:1.0f
constant:87.0f]];
做到這一點的代碼現在,我希望所有的標籤,通過與它的父後間隔排列。
我可以用唯一的VFL字符串來做到嗎?這樣的事情,雖然這個例子會崩潰的應用程序:
NSDictionary *views = NSDictionaryOfVariableBindings(contentView, topFirstLabel_, topSecondLabel_, topThirdLabel_, topFourthLabel_);
NSDictionary *metrics = @{ @"bigMargin" : @12 };
[contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[topFirstLabel_][topSecondLabel_][topThirdLabel_][topFourthLabel_]-bigMargin-|"
options:NSLayoutFormatAlignAllTrailing
metrics:metrics
views:views]];
我不認爲你能做到這一點 - 你必須讓格式字符串中的所有標籤對齊它們,但是不能設置其他的間距,因爲你已經完成了其他方法。爲什麼不讓標籤在垂直方向上彼此間隔(而不是內容視圖),那麼您可以使用VFL來執行該間距以及對齊所有後邊緣? – rdelmar
@rdelmar我不能這樣做,我必須將每個單元格從其超級頂部邊緣到基線的固定空間對齊。這裏沒有什麼可做的:P感謝您的迴應。 – emenegro