1

有没有一种方法可以将以下 3 个语法行组合成一个语句,例如(不起作用):

[_cardsContainer addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[cardContainer1]|[cardContainer2]|[cardContainer3]|" options:0 metrics:nil views:viewsDictionary]];

1. [_cardsContainer addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[cardContainer1]|" options:0 metrics:nil views:viewsDictionary]];
2. [_cardsContainer addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[cardContainer2]|" options:0 metrics:nil views:viewsDictionary]];
3. [_cardsContainer addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[cardContainer3]|" options:0 metrics:nil views:viewsDictionary]];
4

3 回答 3

3

不,但您可以分两行完成:

[_cardsContainer addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[cardContainer1]|" options:0 metrics:nil views:viewsDictionary]];

这将卡片容器 1 固定到 superview 的顶部和底部。然后:

[_cardsContainer addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|[cardContainer1][cardContainer2][cardContainer3]|"  options:NSLayoutFormatAlignAllTop | NSLayoutFormatAlignAllBottom metrics:nil views:viewsDictionary]];

对齐剩余卡片容器的顶部和底部。

这假设您希望视图彼此相邻布置,您实际上并没有指定任何水平布局细节。

当使用可视化格式来考虑每一行可视化格式语言代表视图中的单行或单列布局时,它会有所帮助。

于 2013-01-17T23:17:54.117 回答
1

据我所知,没有。

于 2013-01-17T22:51:14.527 回答
1

这不是真正的单行,但您可以通过循环执行来减少三行的重复:

for (NSView *view in @[cardContainer1, cardContainer2, cardContainer3]) {
    [_cardsContainer addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[view]|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(view)]];
}
于 2013-01-17T23:39:57.433 回答