Impossible de définir par programme NSConstraints sur l'affichage
-
21-12-2019 - |
Question
J'essaie de faire quelque chose de très simple :Créer une vue à partir de zéro, l'ajouter à la vue du contrôleur et l'étendre bord à bord jusqu'à sa vue d'ensemble, mais je reçois un avertissement de la console une fois l'application exécutée, indiquant que les contraintes ne peuvent pas être ajoutées simultanément à la vue.
backView = [UIView new];
backView.backgroundColor = [UIColor redColor];
[[self view] insertSubview:backView aboveSubview:tableview];
[[self view] addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"|-0-[back]-0-|"
options:0
metrics:nil
views:@{@"back": backView}]];
[[self view] addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-0-[back]-0-|"
options:0
metrics:nil
views:@{@"back": backView}]];
La solution
Lorsque vous créez un UIView
dans le code translates auto-resizing mask to constraints
.
c'est à dire.il prend le cadre que vous lui avez donné lors de sa création ainsi que le masque de redimensionnement automatique et les convertit en NSLayoutConstraints
.
Ces contraintes générées automatiquement entrent alors en conflit avec les contraintes que vous ajoutez manuellement.
Si j'ai raison, vous pourrez résoudre ce problème en ajoutant la ligne...
backView.translatesAutoresizingMaskIntoConstraints = NO;
juste après la première ligne et cela devrait résoudre le problème.