Interface Builderのスーパービューに固定された先頭と末尾の両方のスペースを持つUI要素(UISwitch
実際には重要ではありません)があります。制約は 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で固定する方法は?