一套 SwiftUI 自定义修饰符,用于使 ScrollView 可吸附对齐。
该库的目标是提供一种简单的方法来实现诸如轮播图和幻灯片之类的视图。
Snappable 包含了从 Introspect for SwiftUI 复制的代码 (#17),用于检测来自 UIScrollView 的滚动行为。 因此,此库在 iOS 或 SwiftUI 更新时可能变得脆弱。
.package(
url: "https://github.com/hugehoge/Snappable.git",
.upToNextMinor(from: "0.3.0")
)
pod 'Snappable', '~> 0.3.0'
struct ContentView: View {
@State private var items: [Item]
var body: some View {
ScrollView(.horiaontal) {
LazyHStack {
ForEach(items, id: \.self) { item in
ItemView(item)
.snapID(item) // Step 1
}
}
}
.snappable() // Step 2
}
}
.snapID(_:) 修饰符添加到 ScrollView 中的项目snapID 内部应用了 .id(_:) 修饰符.snappable(_:mode:) 修饰符添加到 ScrollView可以将吸附对齐的锚点设置为一个选项。
.snappable(alignment: .leading)
可用的对齐参数如下
.top (顶部).leading (前导).center (居中).trailing (尾随).bottom (底部)您可以使用以下参数确定拖动结束后吸附的时机。
.afterScrolling (滚动后).immediately (立即)两个参数都与滚动减速速率一起设置。
.snappable(alignment: .center, mode: .afterScolling(decelerationRate: .fast))
.snappable(alignment: .center, mode: .immediately(decelerationRate: .normal, withFlick: false))