Sobes.tech
Middle

Comment modifier la contrainte de hauteur pour que les en-têtes se réduisent à zéro?

sobes.tech IA

Réponse de l'IA

Pour réduire l’en-tête, vous pouvez modifier la constante de sa contrainte de hauteur à 0.

Exemple avec Auto Layout :

// Supposons que vous avez un IBOutlet pour la contrainte de hauteur de l’en-tête
@IBOutlet weak var headerHeightConstraint: NSLayoutConstraint!

// Pour réduire l’en-tête :
headerHeightConstraint.constant = 0.0

// Pour revenir à la hauteur d’origine (si elle est connue) :
// headerHeightConstraint.constant = originalHeaderHeight

// N’oubliez pas de mettre à jour la mise en page si vous n’utilisez pas la mise à jour automatique
UIView.animate(withDuration: 0.3) {
    self.view.layoutIfNeeded()
}

Exemple utilisant NSLayoutConstraint.activate/deactivate :

// Supposons que vous avez la contrainte de hauteur d’origine et une contrainte de hauteur zéro
let originalHeaderHeightConstraint: NSLayoutConstraint!
let zeroHeaderHeightConstraint: NSLayoutConstraint!

// Lors de l’initialisation ou de la configuration :
originalHeaderHeightConstraint = headerView.heightAnchor.constraint(/* ... hauteur d’origine ... */)
zeroHeaderHeightConstraint = headerView.heightAnchor.constraint(equalToConstant: 0.0)
zeroHeaderHeightConstraint.isActive = false // Inactif au départ

// Pour réduire l’en-tête :
NSLayoutConstraint.deactivate([originalHeaderHeightConstraint])
NSLayoutConstraint.activate([zeroHeaderHeightConstraint])

// Pour revenir à la hauteur d’origine :
// NSLayoutConstraint.deactivate([zeroHeaderHeightConstraint])
// NSLayoutConstraint.activate([originalHeaderHeightConstraint])

// Mise à jour de la mise en page avec animation
UIView.animate(withDuration: 0.3) {
    self.view.layoutIfNeeded()
}

Le choix de la méthode dépend de la façon dont vous avez configuré les contraintes. L’utilisation de constant est plus simple pour des contraintes existantes. L’activation/désactivation est utile lorsque vous devez basculer rapidement entre différents états de contraintes ou lorsque plusieurs contraintes définissent la hauteur.

Il est important d’appeler layoutIfNeeded() (de préférence dans le bloc d’animation) pour que les modifications de la constante ou de l’activité des contraintes soient appliquées et que l’interface utilisateur se mette à jour en douceur.