我正在尝试设置一个面板来显示一些信息。我无法让自动布局按我的意愿工作。
这就是我想要做的事情:
我有一个 headerView、一个 UIImageView 和 5 个标签。我希望标签垂直排列,我希望它们与 UIImageView 有 8 个间距。我可以很容易地将它们垂直排列:
[contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:[headerView]-[acresLabel]-[addedLabel(==acresLabel)]-[typeLabel(==acresLabel)]-[zonesLabel(==acresLabel)]-[sceneLabel(==acresLabel)]-|"
options:0
metrics:nil
views:NSDictionaryOfVariableBindings(headerView, acresLabel, addedLabel, typeLabel, zonesLabel, sceneLabel)]];
但是让他们在图像视图之外排队被证明是乏味/冗长的:
[contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[imageView]-[acresLabel]"
options:0
metrics:nil
views:NSDictionaryOfVariableBindings(imageView, acresLabel)]];
[contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[imageView]-[addedLabel]"
options:0
metrics:nil
views:NSDictionaryOfVariableBindings(imageView, addedLabel)]];
[contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[imageView]-[typeLabel]"
options:0
metrics:nil
views:NSDictionaryOfVariableBindings(imageView, typeLabel)]];
[contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[imageView]-[zonesLabel]"
options:0
metrics:nil
views:NSDictionaryOfVariableBindings(imageView, zonesLabel)]];
[contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[imageView]-[sceneLabel]"
options:0
metrics:nil
views:NSDictionaryOfVariableBindings(imageView, sceneLabel)]];
似乎是一种更好的方法,然后为图像视图的每个标签设置一个约束。我尝试添加NSLayoutFormatAlignAllCenterX
到第一个约束,但它将它们都设置为内容视图的中心 X,不会将标签的中心 X 彼此对齐。NSLayoutFormatAlignAllBaseline 在垂直使用时会出错并崩溃。
我将不得不再次为数据执行此操作(英亩:“价值”)。