iOS:如何使用VisualFormat设置带有约束的尾随边距?

iOS:如何使用VisualFormat设置带有约束的尾随边距?,ios,objective-c,nslayoutconstraint,Ios,Objective C,Nslayoutconstraint,我正在学习如何以编程方式使用NSLayoutConstraints,主要是使用VisualFormat使用Constraints,为此,我正在尝试使用此布局重新创建视图: 这个视图由三个子视图组成,一个35x35px圆图标,从视图左边的15px,从视图右边离开的一个复选标记图标15px,中间的一个标签,远离圆形图标和复选标记的9px。 我试过这个: [view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H

我正在学习如何以编程方式使用
NSLayoutConstraints
,主要是使用VisualFormat使用
Constraints,为此,我正在尝试使用此布局重新创建视图:

这个视图由三个子视图组成,一个35x35px圆图标,从视图左边的15px,从视图右边离开的一个复选标记图标15px,中间的一个标签,远离圆形图标和复选标记的9px。 我试过这个:

[view addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-15-[icon(==35)]-9-[label]-9-[checkmark(==24)]-15-|"
                                                             options:0
                                                             metrics:nil
                                                               views:NSDictionaryOfVariableBindings(icon, label, checkmark)]];
图标在正确的位置,标签也从它应该的位置开始,但我不能将复选标记放在我想要的位置。。。它实际上从标签右侧的9px开始,在第二种情况下(使用长标签),复选标记在视图之外


我做错了什么?感谢您的帮助。

分析您的约束,您的约束中已经存在模糊性

H:|-15-[icon(==35)]-9-[label]-9-[checkmark(==24)]-15-|
选中标记距离右边距为15像素,但标记的右边距也为9像素。若图标、标签只占总宽度的20%,那个么你们的复选标记将占据从标签到距右边距15像素的其余空间。这将使checkmark增长。如果约束正确,UIImageView可以使用内在contentSize。解决这一问题的方法是使用这样的不等式约束

H:|-15-[icon(==35)]-9-[label]-(>=9)-[checkmark(==24)]-15-|

这意味着选中标记始终是从右侧开始的15个像素,但标签和选中标记之间的间距大于9个像素。所以,复选标记将始终固定在距离右侧15像素的位置,但标签和复选标记之间的间距可能会有所不同。

我现在知道了。非常感谢你。