Middle
Como alterar a restrição de altura para que os cabeçalhos encolham até zero?
sobes.tech IA
Resposta da IA
Para colapsar o cabeçalho, pode alterar a constante da sua restrição de altura para 0.
Exemplo com Auto Layout:
// Suponha que tem um IBOutlet para a restrição de altura do cabeçalho
@IBOutlet weak var headerHeightConstraint: NSLayoutConstraint!
// Para colapsar o cabeçalho:
headerHeightConstraint.constant = 0.0
// Para devolver a altura original (se conhecida):
// headerHeightConstraint.constant = originalHeaderHeight
// Não se esqueça de atualizar o layout se não usar atualização automática
UIView.animate(withDuration: 0.3) {
self.view.layoutIfNeeded()
}
Exemplo usando NSLayoutConstraint.activate/deactivate:
// Suponha que tem a restrição de altura original e uma de altura zero
let originalHeaderHeightConstraint: NSLayoutConstraint!
let zeroHeaderHeightConstraint: NSLayoutConstraint!
// Durante a inicialização ou configuração:
originalHeaderHeightConstraint = headerView.heightAnchor.constraint(/* ... altura original ... */)
zeroHeaderHeightConstraint = headerView.heightAnchor.constraint(equalToConstant: 0.0)
zeroHeaderHeightConstraint.isActive = false // Inicialmente não ativo
// Para colapsar o cabeçalho:
NSLayoutConstraint.deactivate([originalHeaderHeightConstraint])
NSLayoutConstraint.activate([zeroHeaderHeightConstraint])
// Para devolver à altura original:
// NSLayoutConstraint.deactivate([zeroHeaderHeightConstraint])
// NSLayoutConstraint.activate([originalHeaderHeightConstraint])
// Atualização do layout com animação
UIView.animate(withDuration: 0.3) {
self.view.layoutIfNeeded()
}
A escolha do método depende de como configurou as restrições. Usar constant é mais simples para restrições existentes. Ativar/desativar é útil quando precisa alternar rapidamente entre diferentes estados de restrições ou quando várias restrições definem a altura.
É importante chamar layoutIfNeeded() (de preferência dentro do bloco de animação) para que as alterações na constante ou na atividade das restrições sejam aplicadas e a interface seja atualizada suavemente.