106 votes

Que se passe-t-il avec les contraintes lorsqu'une vue est supprimée ?

La question que je me pose est simple mais je n'ai trouvé aucune information dans la documentation.

Que se passe-t-il avec les contraintes de mise en page lorsqu'une vue est supprimée de la hiérarchie des vues (ou déplacée vers une autre vue) ?

Par exemple, prenons le conteneur C avec des sous-vues A y B . Container C détient certaines contraintes. Nous appelons alors [A removeFromSuperview] . Que se passe-t-il avec les contraintes pour A ?

Que se passe-t-il alors si nous ajoutons A a C encore ?

114voto

rdelmar Points 53270

Les contraintes sont supprimées. Si vous ajoutez à nouveau A, vous devrez créer de nouvelles contraintes pour lui, ou si vous sauvegardez les contraintes avant de supprimer A, vous pourrez les ajouter à nouveau. Lorsque je fais quelque chose comme ça, j'enregistre les contraintes comme ceci pour une vue appelée view1 :

self.portraitConstraints = [NSMutableArray new];
for (NSLayoutConstraint *con in self.view.constraints) {
    if (con.firstItem == self.view1 || con.secondItem == self.view1) {
       [self.portraitConstraints addObject:con];
    }
}

2voto

Mike Pollard Points 3146

Les contraintes sont également supprimées lorsque vous [A removeFromSuperview]

Ils sont oubliés et ajouter à nouveau A à C n'ajoute aucune contrainte.

1voto

Andrea Points 6580

Ils sont aussi retirés, vous pouvez faire un simple test. Prenez une vue SUBVIEW et créez des contraintes qui obligent SUBVIEW à suivre le redimensionnement de sa vue supérieure (comme attaché aux bords de la vue supérieure). Pour ce faire, ajoutez SUBVIEW comme sous-vue à CONTAINERVIEW et ajoutez comme contraintes quelque chose comme ça :
V:|-[SUBVIEW]-||
H:|-[SUBVIEW]-||
Ces contraintes doivent être ajoutées à la vue supérieure SUBVIEW, donc CONTAINERVIEW.
Si vous supprimez SUBVIEW en vérifiant simplement toutes les contraintes CONTAINERVIEW, vous pourrez constater que deux d'entre elles n'existent plus.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X