APDynamicGrid
is a SwiftUI package that helps you create consistent and animatable grids. The DynamicGrid
View preserves the same widtsrc="https://raw.github.com/antoniopantaleo/APDynamicGrid/master/justing the last elements consistently.
Define your model adopting the Hashable
and Identifiable
protocols
struct Entry : Identifiable, Hashable {
let id = UUID()
// ...
}
and wrap it with the @State
decorator
var body : some View {
private @State var entries : [Entry]
// number of columns is a @State var too
private @State var columns : Int
ScrollView {
DynamicGrid(columns: $columns, data: $entries) { entry in
MyCustomCell(entry: entry)
}
}
}
Entries can be animated registering a @Namespace
using their unique id
var body : some View {
private @State var entries : [Entry]
private @State var columns : Int
// 1. add a namespace
private @Namespace var namespace
ScrollView {
DynamicGrid(columns: $columns, data: $entries) { entry in
MyCustomCell(entry: entry)
// 2. register the namespace
.matchedGeometryEffect(id: entry.id, in: namespace)
}
// 3. apply animations
.animation(.default)
}
}
You have to select File
-> Swift Packages
-> Add Package Dependency
and enter the repository url https://github.com/antoniopantaleo/APDynamicGrid.git
You have to add the package as a dependency in your Package.swift
file
let package = Package(
//...
dependencies: [
.package(url: "https://github.com/antoniopantaleo/APDynamicGrid.git", upToNextMajor(from: "1.0.0")),
],
//...
)
link |
Stars: 33 |
Last commit: 3 weeks ago |
This patch add missing asset in README
Swiftpack is being maintained by Petr Pavlik | @ptrpavlik | @swiftpackco | API | Analytics