La création Automatique de contraintes de Mise en forme à topLayoutGuide et bottomLayoutGuide dans le code
Apple la documentation sur la création Automatique de contraintes de Mise en forme entre la vue et l'un des repères de mise en page ne montre un exemple d'utilisation de VFL.
Est-il possible de créer ces contraintes par programme sans VFL (à l'aide de NSLayoutConstraint
's d'autres API ou similaire)?
(Note: je suis en demandant explicitement à ce sujet dans le code, pas dans Interface Builder. Et je ne veux pas être calculé length
du guide défini comme une constante statique sur une contrainte, je veux une contrainte où des modifications au guide de présentation de la longueur entraînent automatiquement l'accès limité à vue pour régler la position.)
- Qu'est-ce que le VFL? Le lien est cassé...
Vous devez vous connecter pour publier un commentaire.
Pour un
UIButton
que vous voulez placer 20 points en dessous de laUIViewController.topLayoutGuide
vous créez leNSLayoutConstraint
comme suit:Avec iOS 9, vous pouvez également créer le
NSLayoutConstraint
de cette façon:NSLayoutAttributeBaseline
n'est pas nécessaire pour le faire fonctionner. Si vous êtes à la clouant letopLayoutGuide
,NSLayoutAttributeBottom
fonctionne de la même façon (etNSLayoutAttributeTop
doit être utilisé lors de l'épingler à labottomLayoutGuide
bien sûr). De toute façon...j'ai pensé, j'ai essayé cette approche avant et ça ne fonctionne pas...suppose que je visse quelque chose.Pour compléter @JamieMcDaniel réponse, la Swift + iOS9 version:
N'oubliez pas le
.active = true
partie sinon la contrainte n'est pas un coup de pied dans automatiquement.C'est un gist j'ai créé, vous êtes censé intégrer tous vos sous-vues dans un réservoir de vue(conteneur de vue) a été ajoutée dans une xib, il enlève le réservoir de vue-superview xib contraintes et ajoute un upper contraintes à topLayoutGuide donner un iOS6 look. Il pourrait être intéressant pour ce que vous voulez atteindre.
constraintWithItem
méthodes sont juste, c'est juste une question de goût. Je préfère VFL chaque fois que possible, je viens de rater quelques fonctionnalités comme le centrage. Pour couper un peu de code, j'ai créé une, très simple, mise en page automatique helper, juste au cas où vous le trouvez utile.@"V:|[topLayoutGuide]-0-[tankView]|"
à@"V:[topLayoutGuide][tankView]|"
(supprimé la relation entre le haut de la superview et le haut guide de présentation et le-0-
entre le haut guide de présentation et tankView)...Simplement un ajout à @Jamie McDaniel, dans le cas où il n'est pas immédiatement évident, vous devez ajouter la contrainte qu'il suggère de créer: