Kaip keičiasi vartotojo sąsajos elementų aukštis ir plotis slenkant iOS?
sobes.tech AI
Atsakymas iš AI
Standartinės realizacijos atveju UIView elementų aukštis ir plotis lieka nepakitę UIScrollView ar jos palikuonių (UITableView, UICollectionView) viduje slenkant:
Elementų padėtis (savybės frame.origin reikšmė) keičiasi atsižvelgiant į bounds scroll-view. Savybė bounds scroll-view pasislenkant juda, tačiau jos dydis (bounds.size) lieka pastovus (lyginant su frame.size).
Turinio dydis, kuris gali būti slenkamas, nustatomas pagal contentSize savybę. Elementai, esantys contentSize ribose, bus matomi slenkant:
Elemento dydžio keitimas slenkant (paralaksas ar suspaudimas/plečiama) automatiškai nevyksta ir reikalauja papildomos logikos:
-
Įgyvendinimas
UIScrollViewDelegate: StebėticontentOffsetpokyčiusscrollViewDidScroll(_:)metode ir rankiniu būdu keisti reikalingo elementoframearbounds:// Pavyzdys, kaip keisti elemento aukštį slenkant func scrollViewDidScroll(_ scrollView: UIScrollView) { let yOffset = scrollView.contentOffset.y let initialHeight: CGFloat = 200 let maxHeight: CGFloat = 300 // Suspaudimas žemyn, išplėtimas aukštyn let newHeight = max(0, min(maxHeight, initialHeight - yOffset)) someView.frame.size.height = newHeight // Pozicijos apdorojimas, jei jis nėra viršuje tvirtinamas } -
Naudojant
UIVisualEffectView: Efektų, tokių kaip išblukimas ar vibracija, kurie gali keistis slenkant priklausomai nuo po juo esančio turinio. -
Individualūs išdėstymai:
UICollectionViewgalima sukurti individualųUICollectionViewLayout, kuris valdo langelių transformacijas slenkant. -
Animacijos: Naudojant
UIViewPropertyAnimatorar kitus animacijos mechanizmus, kurie paleidžiami slenkant.
Taigi, pagrindinis elgesys — nekintantis dydis. Bet kokie dydžio pokyčiai — tai specifinės realizacijos rezultatas.