Middle
Бийиктик чектөөнүн кантип өзгөртсө болот, башчалар нөлгө түшсө болот?
sobes.tech AI
AIден жооп
Хедерди жабуу үчүн, анын constraint бийиктигинин туруктуу маанисин 0га өзгөртсө болот.
Auto Layout колдонуу мисалы:
// Мисал катары, сизде IBOutlet бар, ал хедердин бийиктигинин constraint үчүн
@IBOutlet weak var headerHeightConstraint: NSLayoutConstraint!
// Хедерди жабуу үчүн:
headerHeightConstraint.constant = 0.0
// Баштапкы бийиктигин кайтаруу үчүн (эгер белгилүү болсо):
// headerHeightConstraint.constant = originalHeaderHeight
// Layoutти жаңыртуу үчүн, автоматтык жаңыртуу колдонулбаса:
UIView.animate(withDuration: 0.3) {
self.view.layoutIfNeeded()
}
NSLayoutConstraint.activate/deactivate колдонуу мисалы:
// Мисал катары, баштапкы жана нөлгө теңдешкен constraint бар
let originalHeaderHeightConstraint: NSLayoutConstraint!
let zeroHeaderHeightConstraint: NSLayoutConstraint!
// Инициализация же конфигурация учурунда:
originalHeaderHeightConstraint = headerView.heightAnchor.constraint(/* ... баштапкы бийиктик ... */)
zeroHeaderHeightConstraint = headerView.heightAnchor.constraint(equalToConstant: 0.0)
zeroHeaderHeightConstraint.isActive = false // Башта актив эмес
// Хедерди жабуу үчүн:
NSLayoutConstraint.deactivate([originalHeaderHeightConstraint])
NSLayoutConstraint.activate([zeroHeaderHeightConstraint])
// Баштапкы бийиктигин кайтаруу үчүн:
// NSLayoutConstraint.deactivate([zeroHeaderHeightConstraint])
// NSLayoutConstraint.activate([originalHeaderHeightConstraint])
// Layoutти жаңыртуу анимация менен:
UIView.animate(withDuration: 0.3) {
self.view.layoutIfNeeded()
}
Тандоо сиздин constraints түзүмүңүзгө көз каранды. constant колдонуу оңой, эгерде constraints алдын ала белгиленсе. Активтөө/деактивтөө тез арада шарттарды которуу үчүн же бир нече constraints бийликти аныктоо үчүн пайдалуу.
Маанилүү: layoutIfNeeded() чакырыңыз (жөнүндө, анимациялык блоктун ичинде), өзгөртүүлөр колдонулуп, UI жогорулайт жана плавно өзгөрөт.