如何在iOS中以编程方式添加水平间距和垂直间距?

Bal*_*yal 4 iphone objective-c ios

我在ios 8中创建了一个应用程序。由于我有4个垂直可用的标签(它应在某些条件下更改位置),因此我已禁用自动布局并以编程方式设置了约束。现在,问题是我可以为水平和垂直位置,宽度和高度设置约束,我找不到任何方法为标签之间的水平和垂直间距添加约束。

谁能帮我做到这一点。

到目前为止,我有以下代码:

NSArray *constraint_V_WebUrl = [NSLayoutConstraint constraintsWithVisualFormat:@"V:[weburl(31)]" options:0 metrics:nil views:contentDictionary];
    NSArray *constraint_H_WebUrl = [NSLayoutConstraint constraintsWithVisualFormat:@"H:[weburl(196)]" options:0 metrics:nil views:contentDictionary];
    NSArray *constraint_POS_H_WebUrl = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|-13-[weburl]" options:0 metrics:nil views:contentDictionary];
[self.cardDetails addConstraints:constraint_POS_V_WebUrl];
    [self.cardDetails addConstraints:constraint_POS_H_WebUrl];
[self.cardDetails addConstraint:[NSLayoutConstraint constraintWithItem:self.weburl attribute:NSla relatedBy:NSLayoutRelationEqual toItem:self.cardDetails attribute:NSLayoutAttributeTopMargin multiplier:1 constant:0.0]];
Run Code Online (Sandbox Code Playgroud)

上面的代码工作正常。但是我想在标签之间设置水平和垂直间距。

Ego*_*gor 5

您可以同时使用可视格式和代码格式来定义约束。视觉格式有很多限制,并不适用于所有情况。

您可以使用(水平间距):

[NSLayoutConstraint constraintWithItem:YourViewAtLeft
 attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual
 toItem:YourViewAtRight attribute:NSLayoutAttributeLeft
 multiplier:1.0 constant:ValueOfSpacing];

// Paste your view names and constraint value.
Run Code Online (Sandbox Code Playgroud)

然后使用添加此约束addCostraint


Gre*_*gzo 5

您可以使用约束将子视图与另一个视图保持固定距离(水平或垂直)。只需记住,当约束两个同级视图时,应将约束添加到父视图。

示例:假设您有2个标签label1和label2,它们都是UIView的子级,称为parentView。创建带有label2和label1作为项的约束,label2左边等于label1右边,乘数1且常数等于所需的水平间距。然后将约束添加到parentView,而不是两个标签。

示例代码:

 [ parentView addConstraint:[NSLayoutConstraint constraintWithItem: label2 
                                                         attribute: NSLayoutAttribueLeft                                 
                                                         relatedBy: NSLayoutRelationEqual
                                                            toItem: label1  
                                                         attribute: NSLayoutAttributeRight 
                                                        multiplier: 1 
                                                          constant: LABEL_SPACING ] ];
Run Code Online (Sandbox Code Playgroud)