eu tenho um UIView
e defino as restrições usando o Xcode Interface Builder.
Agora eu preciso atualizar isso UIView's
constante de altura programaticamente.
Tem uma função que funciona assim myUIView.updateConstraints()
, mas não sei como usar.
swift
xcode
autolayout
nslayoutconstraint
ios-autolayout
Chris Mikkelsen
fonte
fonte
Respostas:
Selecione a restrição de altura do construtor de interface e obtenha uma saída dela. Então, quando você quiser alterar a altura da vista, você pode usar o código abaixo.
Método
updateConstraints()
é um método de instância deUIView
. É útil quando você está definindo as restrições de maneira programática. Ele atualiza as restrições para a vista. Para mais detalhes clique aqui .fonte
Se você tiver uma visualização com várias restrições, uma maneira muito mais fácil sem ter que criar vários pontos de venda seria:
No construtor de interface, dê a cada restrição que deseja modificar um identificador:
Então, no código, você pode modificar várias restrições como:
Você pode atribuir a várias restrições o mesmo identificador, permitindo agrupar as restrições e modificar tudo de uma vez.
fonte
Mude
HeightConstraint
eWidthConstraint
sem criarIBOutlet
.Nota: Atribua restrição de altura ou largura no Storyboard ou arquivo XIB. depois de buscar esta restrição usando esta extensão.
Você pode usar esta extensão para obter uma restrição de altura e largura:
Você pode usar:
fonte
first(where: ...)
você pode usar imediatamente em vez defilter
+first
Arraste a restrição para o seu VC como um IBOutlet. Em seguida, você pode alterar seu valor associado (e outras propriedades; verifique a documentação):
fonte
fonte
Se o método acima não funcionar, certifique-se de atualizá-lo no bloco Dispatch.main.async {}. Você não precisa chamar o método layoutIfNeeded () então.
fonte
Primeiro conecte a restrição de altura em nosso viewcontroller para criar IBOutlet como o código abaixo mostrado
em seguida, coloque o código abaixo em exibição carregou ou dentro de qualquer ação
se estiver dentro de um botão, clique
fonte
Para atualizar uma restrição de layout, você só precisa atualizar a propriedade constante e chamar layoutIfNeeded depois.
fonte
fonte