Sobes.tech
Middle

Kako promeniti ograničenje visine da se zaglavlja skupe na nulu?

sobes.tech АИ

Одговор од АИ

Da biste sklopili zaglavlje, možete promeniti konstantu njegove restrikcije visine na 0.

Primer sa Auto Layout:

// Pretpostavimo da imate IBOutlet za restrikciju visine zaglavlja
@IBOutlet weak var headerHeightConstraint: NSLayoutConstraint!

// Da sklopite zaglavlje:
headerHeightConstraint.constant = 0.0

// Da vratite početnu visinu (ako je poznata):
// headerHeightConstraint.constant = originalHeaderHeight

// Ne zaboravite da osvežite layout ako ne koristite automatsko osvežavanje
UIView.animate(withDuration: 0.3) {
    self.view.layoutIfNeeded()
}

Primer sa NSLayoutConstraint.activate/deactivate:

// Pretpostavimo da imate originalnu restrikciju visine i restrikciju na 0
let originalHeaderHeightConstraint: NSLayoutConstraint!
let zeroHeaderHeightConstraint: NSLayoutConstraint!

// Tokom inicijalizacije ili konfiguracije:
originalHeaderHeightConstraint = headerView.heightAnchor.constraint(/* ... originalna visina ... */)
zeroHeaderHeightConstraint = headerView.heightAnchor.constraint(equalToConstant: 0.0)
zeroHeaderHeightConstraint.isActive = false // Na početku nije aktivno

// Da sklopite zaglavlje:
NSLayoutConstraint.deactivate([originalHeaderHeightConstraint])
NSLayoutConstraint.activate([zeroHeaderHeightConstraint])

// Da vratite na originalnu visinu:
// NSLayoutConstraint.deactivate([zeroHeaderHeightConstraint])
// NSLayoutConstraint.activate([originalHeaderHeightConstraint])

// Osvežite layout sa animacijom
UIView.animate(withDuration: 0.3) {
    self.view.layoutIfNeeded()
}

Izbor metode zavisi od toga kako ste konfigurisali constraints. Korišćenje constant je jednostavnije za postojeće constraints. Aktivacija/deaktivacija je korisna kada je potrebno brzo prebacivanje između različitih stanja constraints ili kada više constraints određuje visinu.

Važno je pozvati layoutIfNeeded() (po mogućstvu unutar bloka animacije) kako bi promene u konstantama ili aktivnostima constraints bile primenjene i UI se glatko osvežio.