Auto Layout делает что-то, что не имеет смысла для меня, но, надеюсь, к одному из вас:Auto Layout не в состоянии удовлетворить ограничения при добавлении более 4 подвидов
У меня есть UIView containerView и 5 UIViews coverview1- coverview5. Я хочу разместить эти 5 обложки рядом друг с другом в контейнереView: та же ширина, то же самое выравнивание по нижнему краю, без интервала в любом месте, например | [__] [__] [__] [__] [__] |
Так что я делаю:
[coverviewContainer addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:
@"H:|[coverview1(>=0)][coverview2(==coverview1)][coverview3(==coverview1)][coverview4(==coverview1)][coverview5(==coverview1)]|" options:NSLayoutFormatAlignAllBottom metrics:nil views:viewsDictionary]];
и я получаю:
Unable to simultaneously satisfy constraints.
(
"<NSLayoutConstraint:0x1d5ae4f0 ItemView:0x1d58f6f0.centerX == ItemView:0x1d580410.centerX>",
"<NSLayoutConstraint:0x1d5ae470 ItemView:0x1d58f6f0.centerX == ItemView:0x1d59b480.centerX>",
"<NSLayoutConstraint:0x1d5aed70 ItemView:0x1d580410.centerX == ItemView:0x1d59b480.centerX>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x1d5ae470 ItemView:0x1d58f6f0.centerX == ItemView:0x1d59b480.centerX>
Странная вещь, я не получаю предупреждение, если я одно из следующих действий:
[coverviewContainer addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:
@"H:|[coverview1(>=0)]|" options:NSLayoutFormatAlignAllBottom metrics:nil views:viewsDictionary]];
//or
[coverviewContainer addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:
@"H:|[coverview1(>=0)][coverview2(==coverview1)]|" options:NSLayoutFormatAlignAllBottom metrics:nil views:viewsDictionary]];
//or
[coverviewContainer addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:
@"H:|[coverview1(>=0)][coverview2(==coverview1)][coverview3(==coverview1)]|" options:NSLayoutFormatAlignAllBottom metrics:nil views:viewsDictionary]];
//or
[coverviewContainer addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:
@"H:|[coverview1(>=0)][coverview2(==coverview1)][coverview3(==coverview1)][coverview4(==coverview1)]|" options:NSLayoutFormatAlignAllBottom metrics:nil views:viewsDictionary]];
//or
[coverviewContainer addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:
@"H:|[coverview1(>=0)][coverview2(==coverview1)][coverview3(==coverview1)][coverview5(==coverview1)]|" options:NSLayoutFormatAlignAllBottom metrics:nil views:viewsDictionary]];
(последние два не совпадают, так как я заменил coverview4 на coverview5)
Почему я могу добавить только до 4 просмотров? Почему добавление пятого результата приводит к внезапной проблеме с выравниванием по центру centerX?