gpt4 book ai didi

ios - NSLayoutConstraint 设置

转载 作者:行者123 更新时间:2023-12-01 17:42:27 28 4
gpt4 key购买 nike

我正在尝试设置一个面板来显示一些信息。我无法让自动布局按我的意愿工作。

这就是我想要做的事情:

enter image description here

我有一个 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)]];

但是让他们在 ImageView 之外排队被证明是乏味/冗长的:
[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)]];

似乎是一种更好的方法,然后为 ImageView 的每个标签设置一个约束。我尝试添加 NSLayoutFormatAlignAllCenterX到第一个约束,但它将它们都设置为内容 View 的中心 X,不会将标签的中心 X 彼此对齐。 NSLayoutFormatAlignAllBaseline 在垂直使用时会出错并崩溃。

我将不得不再次为数据执行此操作(英亩:“值(value)”)。

最佳答案

NSLayoutFormatAlignAllCenterX 让您走在正确的轨道上.您需要做的只是隔离 V:[headerView]-[acresLabel]从约束的其余部分,因为你不想要 headerView 'CenterX 与 5 个标签对齐'。

// NSDictionary* views ;
[NSLayoutConstraint constraintsWithVisualFormat:@"V:[headerView]-[acresLabel]" options:0 metrics:nil views:views] ;
// Use any of the horizontal NSLayoutFormats (NSLayoutFormatAlignAllLeft, NSLayoutFormatAlignAllRight, NSLayoutFormatAlignAllLeading, NSLayoutFormatAlignAllTrailing, NSLayoutFormatAlignAllCenterX)
[NSLayoutConstraint constraintsWithVisualFormat:@"V:[acresLabel]-[addedLabel(==acresLabel)]-[typeLabel(==acresLabel)]-[zonesLabel(==acresLabel)]-[sceneLabel(==acresLabel)]-|" options:NSLayoutFormatAlignAllCenterX metrics:0 views:views] ;
[NSLayoutConstraint constraintsWithVisualFormat:@"H:[imageView]-[acresLabel]" options:0 metrics:nil views:views] ;

关于ios - NSLayoutConstraint 设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15029556/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com