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}]];
Était-ce utile?

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.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top