【发布时间】:2014-11-27 05:18:21
【问题描述】:
我有一个 UI 元素(实际上是UISwitch,但实际上并不重要),它的前导和尾随空格都固定在 Interface Builder 中的超级视图上。 Xcode 6 中的约束如下所示:
前导空格的约束实际上是相同的。约束值是42.0分。
这正是我想要的,因为对于不同的设备,我可以更改 UIView 上的 layoutMargins 属性,并且约束将正常工作,以增加视图之间的边距。
现在我想在代码中添加另一个视图,它也将前导和尾随空格固定到它的超级视图边距,因此将相同的 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属性使用这个约束没有效果,所以它显然不是固定到margin,而是直接固定到superview。
所以我的问题是:
如何使用可视格式语言将 UI 元素空间固定到代码中的边距?或者如果不可能,如何使用constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant: API 固定?
【问题讨论】:
标签: ios ios8 autolayout xcode6 visual-format-language