iOS8 mise en page Automatique par programmation pin relative à la mise en page de la marge

J'ai un élément de l'INTERFACE utilisateur (UISwitch effectivement, mais il n'importe pas vraiment) est à la fois en attaque et de fuite de l'espace épinglé à superview dans Interface Builder. La contrainte ressemble à ceci dans Xcode 6:

iOS8 mise en page Automatique par programmation pin relative à la mise en page de la marge

La contrainte d'espace est la même efficacement. La valeur de la contrainte est 42.0 points.

C'est exactement ce que je veux, parce que pour les différents appareils, je peux changer layoutMargins bien sur UIView et les contraintes de fonctionner correctement, d'augmentation de la marge entre les vues.

Maintenant, je veux ajouter un autre point de vue dans le code qui serait à la fois avant et arrière de l'espace épinglé à son superview marge, de sorte que le même layoutMargins ensemble de superview fonctionne.

J'ai épinglé la vue à l'aide de format visuel de la langue avec la syntaxe suivante:

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];

Cela fonctionne, mais layoutMargins propriété n'a aucun effet à l'aide de cette contrainte, c'est de toute évidence n'est pas épinglé à la marge, mais directement à superview.

Donc ma question est:

Comment épingler élément de l'INTERFACE utilisateur des espaces à la marge dans le code à l'aide de visual format langue? Ou si pas possible, comment épingler avec constraintWithItem:attribute:relatedBy:toItem:attribute:multiplier:constant: API?

Merci!

OriginalL'auteur Legoless | 2014-10-02