Sobes.tech
Middle

Hogyan módosítsuk a magasságkorlátozást, hogy a fejlécsorok nullára összeomoljanak?

sobes.tech MI

Válasz az MI-től

A fejléc összecsukásához megváltoztathatja a magasságkorlátozás konstans értékét 0-ra.

Auto Layout példával:

// Tegyük fel, hogy van egy IBOutlet a fejléc magasságkorlátozásához
@IBOutlet weak var headerHeightConstraint: NSLayoutConstraint!

// A fejléc összecsukásához:
headerHeightConstraint.constant = 0.0

// Az eredeti magasság visszaállításához (ha ismert):
// headerHeightConstraint.constant = originalHeaderHeight

// Ne felejtse el frissíteni a layout-ot, ha nem használ automatikus frissítést
UIView.animate(withDuration: 0.3) {
    self.view.layoutIfNeeded()
}

NSLayoutConstraint.activate/deactivate példával:

// Tegyük fel, hogy van az eredeti magasságkorlátozás és egy nullás
let originalHeaderHeightConstraint: NSLayoutConstraint!
let zeroHeaderHeightConstraint: NSLayoutConstraint!

// Inicializálás vagy konfiguráció során:
originalHeaderHeightConstraint = headerView.heightAnchor.constraint(/* ... eredeti magasság ... */)
zeroHeaderHeightConstraint = headerView.heightAnchor.constraint(equalToConstant: 0.0)
zeroHeaderHeightConstraint.isActive = false // Kezdetben nem aktív

// A fejléc összecsukásához:
NSLayoutConstraint.deactivate([originalHeaderHeightConstraint])
NSLayoutConstraint.activate([zeroHeaderHeightConstraint])

// Az eredeti magasság visszaállításához:
// NSLayoutConstraint.deactivate([zeroHeaderHeightConstraint])
// NSLayoutConstraint.activate([originalHeaderHeightConstraint])

// Layout frissítése animációval
UIView.animate(withDuration: 0.3) {
    self.view.layoutIfNeeded()
}

A módszer kiválasztása attól függ, hogyan konfigurálta a constraints-t. A constant használata egyszerűbb a meglévő constraints esetén. Az aktiválás/deaktiválás akkor hasznos, ha gyorsan váltogatni kell különböző állapotok között, vagy amikor több constraints határozza meg a magasságot.

Fontos, hogy meghívja a layoutIfNeeded()-et (preferably az animációs blokkban), hogy a változások alkalmazódjanak, és a UI simán frissüljön.