Middle
Ako zmeniť obmedzenie výšky, aby sa hlavičky zmrštili na nulu?
sobes.tech AI
Odpoveď od AI
Za zloženje glave lahko spremenite konstanto njene omejitve višine na 0.
Primer z Auto Layout:
// Predpostavimo, da imate IBOutlet za omejitev višine glave
@IBOutlet weak var headerHeightConstraint: NSLayoutConstraint!
// Za zloženje glave:
headerHeightConstraint.constant = 0.0
// Za povrnitev na izvirno višino (če je znana):
// headerHeightConstraint.constant = originalHeaderHeight
// Ne pozabite posodobiti postavitve, če ne uporabljate samodejne posodobitve
UIView.animate(withDuration: 0.3) {
self.view.layoutIfNeeded()
}
Primer z NSLayoutConstraint.activate/deactivate:
// Predpostavimo, da imate izvirno omejitev višine in ničelno
let originalHeaderHeightConstraint: NSLayoutConstraint!
let zeroHeaderHeightConstraint: NSLayoutConstraint!
// Ob inicializaciji ali konfiguraciji:
originalHeaderHeightConstraint = headerView.heightAnchor.constraint(/* ... izvirna višina ... */)
zeroHeaderHeightConstraint = headerView.heightAnchor.constraint(equalToConstant: 0.0)
zeroHeaderHeightConstraint.isActive = false // Začetno neaktivno
// Za zloženje glave:
NSLayoutConstraint.deactivate([originalHeaderHeightConstraint])
NSLayoutConstraint.activate([zeroHeaderHeightConstraint])
// Za povrnitev na izvirno višino:
// NSLayoutConstraint.deactivate([zeroHeaderHeightConstraint])
// NSLayoutConstraint.activate([originalHeaderHeightConstraint])
// Posodobitev postavitve z animacijo
UIView.animate(withDuration: 0.3) {
self.view.layoutIfNeeded()
}
Izbira metode je odvisna od tega, kako ste konfigurirali constraints. Uporaba constant je enostavnejša za obstoječe constraints. Aktivacija/deaktivacija je uporabna, ko morate hitro preklapljati med različnimi stanji constraints ali ko več constraints določa višino.
Pomembno je, da pokličete layoutIfNeeded() (najbolje znotraj animacijskega bloka), da se spremembe v konstantah ali aktivnosti constraints uporabijo in UI se gladko posodobi.