Sobes.tech
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 բարձրության և զրոյի 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-ների տարբեր վիճակների միջև կամ երբ մի քանի constraints որոշում են բարձրությունը։

Կարևոր է կանչել layoutIfNeeded() (ավելի լավ է՝ անիմացիոն բլոկի ներսում), որպեսզի փոփոխությունները կիրառվեն և UI-ն հոսում փոխվի։