以编程方式创建"与最近邻居的间距"约束

Jos*_*arl 8 iphone ios autolayout nslayoutconstraint

我正在构建的部分屏幕包含一个包含n视图的部分.我正在代码中生成这些视图 - 它们是简单的UIView子类.

我正在为此屏幕使用AutoLayout约束,我希望每个视图自动将其自身定位在其上方视图下方15px左右.

在Xcode中,可以创建到最近邻居约束间距,这似乎完全符合我的要求.

但是,我似乎无法找到任何显示如何在代码中创建它的示例.

是否可以通过编程方式创建"最近邻居间距"约束?

Ada*_*ach 1

您可以创建约束字典和约束字符串并以编程方式应用它们。

向字典添加项目和键很简单,所以我不会处理这个问题。只要记住约束系统中的每个视图都必须在字典中。

创建格式字符串是有趣的一点。假设您想将视图添加到某个视图下,假设它具有 NSString 键 topView。格式字符串的第一部分看起来像

NSString *constraintBase = [NSString stringWithFormat:@"V:topView"];
Run Code Online (Sandbox Code Playgroud)

对于要添加的每个视图,添加到该字符串

NSString *constraintString = [constraintBase stringByAppendingString:[NSString stringWithFormat:@"-15-%@", viewDictionaryKey]];
Run Code Online (Sandbox Code Playgroud)

最后像往常一样应用constraintString,一个构造的视觉约束格式字符串。

[self.view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:constraintString options:0 metrics:nil views:viewsToConstrain]];
Run Code Online (Sandbox Code Playgroud)