一个开源库,提供 SwiftUI 库的扩展,以帮助处理滚动视图。
作为 XII 的 iOS、macOS 和 watchOS 应用程序中各种项目的可重用组件而开发。
SwiftUIScroll
库以添加到您的项目请参阅 LICENSE 文件。
ScrollViewState
(源代码)struct ScrollViewState {
let proxy: ScrollViewProxy
let scrollOffset: CGPoint
let isScrolling: Bool
let cancelScrolling: () -> Void
}
表示 ScrollView
的当前状态,包括
ScrollViewProxy
的引用CGPoint
形式表示(从左上角开始)ScrollView
是否正在主动滚动,包括减速ScrollViewState
(源代码)struct ScrollViewWithFeedback<Content : View> : View {
init(
_ axes: Axis.Set = .vertical,
showsIndicators: Bool = true,
@ViewBuilder contentBuilder: @escaping (ScrollViewState) -> Content
)
var body: some View { get }
}
一个类似于 ScrollViewReader
的视图,不仅提供 ScrollViewProxy
,还提供滚动视图的当前偏移量和滚动状态。与 ScrollViewReader
不同,此视图本身充当 ScrollView
,内容作为滚动视图内容呈现。
struct FooView : View {
var body : some View {
ScrollViewWithFeedback { state in
ForEach(0...100, id: \.self) { index in
Text("Item: \(index)")
}
.onChange(of: state.scrollOffset) { position in
print("OFFSET: \(position)")
}
}
}
}
FeatheredScrollView
(源代码)struct FeatheredScrollView<Content : View> : View {
init(
maxFeatheredPercent: CGFloat = 0.05,
@ViewBuilder content: @escaping (ScrollViewState) -> Content
)
var body: some View { get }
}
一个专门的 ScrollView
,当用户开始向上滚动时,会对其内容应用羽化蒙版。最大羽化量限制为视图高度的请求百分比(默认为 5%)。