我有一个 UI 元素(UISwitch
实际上,但实际上并不重要),它的前导和尾随空间都固定在 Interface Builder 中的 superview 上。Xcode 6 中的约束如下所示:
前导空间的约束实际上是相同的。约束值为42.0 点。
这正是我想要的,因为对于不同的设备,我可以更改layoutMargins
属性UIView
并且约束将正常工作,以增加视图之间的边距。
现在我想在代码中添加另一个视图,该视图也将前导和尾随空间固定到它的超级视图边距,因此相同的layoutMargins
超级视图设置将起作用。
我使用以下语法使用视觉格式语言固定视图:
NSArray *constraints = [NSLayoutConstraint constraintsWithVisualFormat:@"|-42.0-[separatorView]-42.0-|" options:0 metrics:nil views:NSDictionaryOfVariableBindings(self.contentView, separatorView)];
[self.contentView addConstraints:constraints];
[self.contentView setNeedsUpdateConstraints];
这行得通,但是layoutMargins
使用这个约束属性没有效果,所以它显然不是固定到边距,而是直接固定到超级视图。
所以我的问题是:
如何使用视觉格式语言将 UI 元素空间固定到代码中的边距?或者如果不可能,如何使用constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant:
API 进行固定?