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

我已经在iOS 8中创build了一个应用程序。在这个应用程序中,我有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]]; 

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

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

在你的情况下,你可以使用(水平间距):

 [NSLayoutConstraint constraintWithItem:YourViewAtLeft attribute:NSLayoutAttributeRight relatedBy:NSLayoutRelationEqual toItem:YourViewAtRight attribute:NSLayoutAttributeLeft multiplier:1.0 constant:ValueOfSpacing]; // Paste your view names and constraint value. 

然后用addCostraint添加这个约束。

您可以使用约束将子视图放置在距离另一个固定距离(水平或垂直)的位置。 请记住,在约束两个兄弟视图时,应将约束添加到父视图。

例子:假设你有两个标签,label1和label2,都是一个名为parentView的UIView子元素。 用label2和label1作为项目​​创build约束,label2等于label1右,乘数1和常数等于所需的水平间距。 然后将约束添加到parentView,而不是任何标签。

示例代码:

  [ parentView addConstraint:[NSLayoutConstraint constraintWithItem: label2 attribute: NSLayoutAttribueLeft relatedBy: NSLayoutRelationEqual toItem: label1 attribute: NSLayoutAttributeRight multiplier: 1 constant: LABEL_SPACING ] ]; 

巴拉吉

我有一个类似的问题,但能够通过在标签之间的故事板中创build约束并将它们(约束)连接到IBOutlet NSLayoutConstraints来修复它。 通过检查不同的屏幕尺寸,可以在代码中修改约束。

 @property (weak, nonatomic) IBOutlet NSLayoutConstraint* verticalSpace1; 

然后,在视野里会出现…

 if (height > x) { // x would just be below the height you wanted to change it for _verticalSpace1.constant = 20; } 

这改变了我以前在故事版中设置的间距,最多为20,希望能够解决您的问题。