VariadicViews extends SwiftUI's capabilities by introducing a versatile way to extrapolate child views dynamically from opaque view content.
To know more about please read this awesome blog post from Moving Parts.
Integrating VariadicViews is as simple as integrating standard SwiftUI views.
import VariadicViews
UnaryVariadicView(content) { views in
let last = views.last?.id
ForEach(views) { view in
view
if view.id != last {
Divider()
}
}
}UnaryVariadicChildren produces an unary container (like a VStack), MultiVariadicChildren produces a multi container (like a TupleView).
VariadicViewChildren is a collection of hashable and identifiable views.
Elements of VariadicViewChildren can handle view traits.
View traits work similar to preference values and can be read directly by subscripting VariadicViewChildren elements.
struct MyString: ViewTraitKey {
static var defaultValue: String? = .none
}
extension View {
func myString(_ value: String) -> some View {
trait(key: MyTag.self, value: value)
}
}
// After using `myString` modifier in some of the views of content
MultiVariadicView(content) { children in
VStack {
ForEach(children) { child in
if let string = child[MyString.self] {
Text(string)
}
}
}
}- Open Xcode, navigate to your project, and select File β Swift Packages β Add Package Dependency...
- Enter the repository URL:
https://github.com/lorenzofiamingo/swiftui-variadic-viewsand proceed by clicking Next. - Finalize the installation by clicking Finish.