No se puede establecer mediante programación NSConstraints a la vista
-
21-12-2019 - |
Pregunta
Estoy tratando de hacer algo muy simple:Creación de una vista desde cero, añadiendo a la del controlador de la vista, y tienen que estirar de borde a borde a su superview, pero me sale la consola de advertencia una vez que la aplicación se ejecuta, diciendo que las restricciones no pueden ser simultáneamente agrega a la vista.
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}]];
Solución
Cuando se crea un UIView
en el código translates auto-resizing mask to constraints
.
es decir,toma el marco que le dio cuando la creó y la auto-cambio de tamaño de la máscara y los convierte en NSLayoutConstraints
.
Estos auto-generado restricciones, a continuación, en conflicto con las restricciones que usted está agregando manualmente.
Si estoy en lo correcto, entonces usted será capaz de solucionarlo mediante la adición de la línea de...
backView.translatesAutoresizingMaskIntoConstraints = NO;
justo después de la primera línea y que debería solucionar el problema.