Não pode definir programaticamente NSConstraints em vista
-
21-12-2019 - |
Pergunta
Eu estou tentando fazer uma coisa muito simples:Criar um modo de exibição a partir do zero, adicionando-o controlador de vista, e ter estiramento de ponta a ponta para seu superview, mas eu me consola aviso assim que o app é executado, dizendo que as restrições não podem ser simultaneamente à 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}]];
Solução
Quando você cria um UIView
no código translates auto-resizing mask to constraints
.
i.e.leva a quadro que você deu a ele quando você o criou e o auto-redimensionamento máscara e converte-los em NSLayoutConstraints
.
Estes auto-gerado restrições, em seguida, são conflitantes com as restrições que está a adicionar manualmente.
Se eu estou certo, então você vai ser capaz de corrigi-lo adicionando a linha...
backView.translatesAutoresizingMaskIntoConstraints = NO;
logo após a primeira linha e que deve resolver o problema.