iOS - Trouver la contrainte maximale pour une vue?
J'essaie de trouver le top de la contrainte de la vue dans le code.
Le haut de la contrainte est ajoutée dans la table de montage séquentiel, et je ne veux pas utiliser un IBOutlet.
La journalisation de la valeur de la firstAttribute dans le code suivant semble toujours y revenir une contrainte de type NSLayoutAttributeHeight. Une idée de comment je pourrait sûrement trouver un haut contrainte de vue dans le code?
NSLayoutConstraint *topConstraint;
for (NSLayoutConstraint *constraint in self.constraints) {
if (constraint.firstAttribute == NSLayoutAttributeTop) {
topConstraint = constraint;
break;
}
}
source d'informationauteur aryaxt
Vous devez vous connecter pour publier un commentaire.
Au lieu d'itérer
self.constraints
vous devez parcourirself.superview.constraints
.La
self.constraints
contiennent seulement des contraintes relatives à la vue (par exemple, la hauteur et la largeur des contraintes).Voici un exemple de code de ce à quoi pouvait ressembler à:
J'ai l'habitude de définir une
identifier
d'une contrainte de l'IB, et puis trouver dans le code comme ceci (Swift):OU par @Tim Vermeulen
Définir l'identifiant de l'inspecteur dans Xcode. Qu'est ce que c'est. Vous nom.
Si cela ne suffit pas de créer la IBOutlet.
L'utilisation de swift et de UIView extension
J'écris une petite extension dans Swift:
extension UIButton {
var topConstraints: [NSLayoutConstraint]? {
return self.constraints.filter( { ($0.firstItem as? UIButton == self && $0.firstAttribute == .top) || ($0.secondItem as? UIButton == self && $0.secondAttribute == .top) })
}
}