As promised, here is the SwiftUI view code that uses this modifier: code-block import SwiftUI struct GridListView: View { @State private var paddingToTop: CGFloat = 68.0 private let expandedPaddingToTop: CGFloat = 68.0 private let paddingBetweenL2AndL3: CGFloat = 24.0 private let L3Height: CGFloat = 44.0 @State private var items: [Int] = Array(1...100) @State private var isLoading: Bool = false private var L3Opacity: CGFloat { pow(paddingToTop / expandedPaddingToTop, 5) } private var L3YOffset: CGFloat { -L3Height + (paddingToTop - paddingBetweenL2AndL3) } var body: some View { ZStack { List { // Show loaded items ForEach(Array(stride(from: 0, to: items.count, by: 2)), id: .self) { index in HStack { GridItemView(item: items[index]) if index + 1 < items.count { GridItemView(item: items[index + 1]) } else { Spacer() } } .listRowInsets(EdgeInsets()) .padding(.vertical, 8) .onAppear { // Detect when user reaches near the end if index == items.count - 2 { loadMoreItemsIfNeeded() } } } // Show
Topic:
UI Frameworks
SubTopic:
SwiftUI
Tags: