如何将约束转换为VFL

时间:2016-05-26 07:09:31

标签: ios ios-autolayout nsautolayout

       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写。

1 个答案:

答案 0 :(得分:2)

你可以做点什么,

  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是superview右边缘的标准间距

如果你在这里button1(button2/2),那么它意味着它的按钮2的一半宽度。如果您需要以高度方式使用此方案,则只需在语句之前添加V:

另一个考试,

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

这种约束意味着,

  • 图像视图的顶部必须是从顶部开始的填充点 上海华

  • 图像视图的底部必须大于或等于0 从按钮顶部开始点

  • 按钮的底部必须是底部的填充点 超级视图。

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

此约束意味着,按钮的宽度应为200磅,优先级为750。

      |-30.0@200-[label]

标签应与superview左侧间隔30个点,优先级为200。

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

有关详细信息,请参阅this link as reference

希望这会有所帮助:)