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}]];
Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top