Hogyan változik a felhasználói felület elemeinek magassága és szélessége az iOS-en történő görgetés során?
sobes.tech MI
Válasz az MI-től
Alapértelmezett megvalósítás esetén a UIView elemek magassága és szélessége változatlan marad a UIScrollView vagy annak leszármazottai (UITableView, UICollectionView) belsejében történő görgetés során.
Az elemek pozíciója (frame.origin értéke) változik a scroll view bounds-ához képest. A bounds tulajdonság a görgetés során mozog, de a mérete (bounds.size) állandó marad (egyenlő a frame.size méretével).
A görgethető tartalom méretét a contentSize tulajdonság határozza meg. A contentSize határain belüli elemek láthatóak lesznek a görgetés során.
Az elemek méretének változása görgetés közben (parallax vagy összenyomás/nyújtás effektus) nem történik automatikusan, és további logikát igényel:
-
Implementáció a
UIScrollViewDelegate-ben: Követni acontentOffsetváltozását ascrollViewDidScroll(_:)metódusban, és manuálisan módosítani az érintett elemframe-jét vagybounds-át.// Példa az elem magasságának változtatására görgetés közben func scrollViewDidScroll(_ scrollView: UIScrollView) { let yOffset = scrollView.contentOffset.y let initialHeight: CGFloat = 200 let maxHeight: CGFloat = 300 // Példa a lefelé történő összenyomásra, felfelé történő nyújtásra let newHeight = max(0, min(maxHeight, initialHeight - yOffset)) someView.frame.size.height = newHeight // Pozíció kezelése, ha az anchor nem a tetején van } -
A
UIVisualEffectViewhasználata: Homályosítás vagy vibrálás effektusokhoz, amelyek görgetés közben változhatnak az alatta lévő tartalomtól függően. -
Egyedi elrendezések: A
UICollectionView-ben létrehozható egy egyediUICollectionViewLayout, amely a cellák transzformációit kezeli a görgetés során. -
Animációk: A
UIViewPropertyAnimatorvagy más animációs mechanizmusok használata, amelyek a görgetési esemény hatására indulnak.
Így az alap viselkedés a méret változatlan marad. Bármilyen méretváltozás egy adott implementáció eredménye.