iOS 使用 VFL 以编程方式约束自动布局

iOS Autolayout Programmatically constraints using VFL

我想做一个这样的关闭按钮,

缩小

[constraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[btnClose(==10)]-|"
                                                                         options:NSLayoutFormatAlignAllCenterY
                                                                         metrics:nil
                                                                           views:NSDictionaryOfVariableBindings(btnClose)]];

因错误而消失

[constraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[btnClose(==-10)]-|"
                                                                         options:NSLayoutFormatAlignAllCenterY
                                                                         metrics:nil
                                                                           views:NSDictionaryOfVariableBindings(btnClose)]];

我应该应用什么约束来使所有设备都支持关闭按钮,如图所示。?

您应该同时提供水平和垂直约束(如果 10 和 0 是顶部和右侧的空格):

[constraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"H:[btnClose]-0-|"
                                                                         options:0
                                                                         metrics:nil
                                                                           views:NSDictionaryOfVariableBindings(btnClose)]];

[constraints addObjectsFromArray:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-10-[btnClose]"
                                                                         options:0
                                                                         metrics:nil
                                                                           views:NSDictionaryOfVariableBindings(btnClose)]];

您不需要指定按钮的尺寸 - 它们将从内容中推断出来,在您的情况下是图像尺寸