NSLayoutConstraint *constraint = [NSLayoutConstraint constraintWithItem:label1 attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:label2 attribute:NSLayoutAttributeTop multiplier:1.0 constant:5];


我试图用VFL编写此代码,但似乎VFL仅提供了NSLayoutFormatAlignAllTop属性。所以我不能将label1设置为低于label2 5个点。

我想知道是否不能用VFL编写此约束。

最佳答案

你可以做类似的事情,

  NSArray *verticalConstraints1 =[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-20-[label1]-20-|" options:0 metrics:nil views:views];  // this set top and bottom vertical constraint

 NSArray *verticalConstraints1 =[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-20-[label1]" options:0 metrics:nil views:views];  // this will set only top

 NSArray *horizontalConstraints =[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-20-[label1]-20-[label2]-20-|" options:0 metrics:nil views:views]; //this will vertical constraint between two label and top and bottom to label1 and label2 respactively


您可以参考this link以获得更多详细信息。

更新:

例如,

 |-[button1(button2)]-[button2]-|


此约束意味着,button1的宽度必须与button2相同,它们之间具有标准间距,button1是距父视图左边缘的标准间距,而button2是距父视图右边缘的标准间距。

如果在这里使用button1(button2/2),则表示它是button2宽度的一半。如果您以高度方式需要这种情况,则只需在语句前添加V:

另一个例子

  V:|-(==padding)-[imageView]->=0-[button]-(==padding)-|


这种限制意味着


图片视图的顶部必须是从顶部开始的填充点
超级观看
图片视图的底部必须大于或等于0
从按钮顶部指向的点
按钮的底部必须是距底部的填充点
超级视图。

 |[button(==200@750)]-[label]|



这意味着按钮的宽度应为200点,优先级为750。

      |-30.0@200-[label]


标签应与超级视图的左侧间隔30点,优先级为200。

简而言之,您可以使用VFL格式设置任何类型的约束。

有关更多详细信息,请参考this link as reference

希望这会有所帮助:)

关于ios - 如何将约束转换为VFL,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37453882/

10-10 04:27