fluidgroup/textureswiftsupport
This is a library to gain **[Texture(AsyncDisplayKit)](http://texturegroup.org/)** more power in Swift.
Requirements
Swiift 5.3+
The cases of usage in Production
- the products of eureka, Inc
Layout DSL
Using resultBuilders, ASLayoutSpec can be more simply and readable it's like SwiftUI's decralations.
Before
override func layoutSpecThatFits(_ constrainedSize: ASSizeRange) -> ASLayoutSpec {
ASStackLayoutSpec(
direction: .vertical,
spacing: 0,
justifyContent: .start,
alignItems: .start,
children: [
self.textNode1,
self.textNode2,
self.textNode3,
]
)
}After
override func layoutSpecThatFits(_ constrainedSize: ASSizeRange) -> ASLayoutSpec {
LayoutSpec {
VStackLayout {
self.textNode1
self.textNode2
self.textNode3
}
}
}Wrapping with LayoutSpec enables us to write DSL inside this block.
More complicated example
LayoutSpec {
if flag {
VStackLayout {
HStackLayout(justifyContent: .center) {
iconNode
.padding(.top, 24)
.padding(.bottom, 16)
}
.background(gradientNode)
}
} else {
gradientNode
}
}⚠️ Please take care of the differences between this DSL and SwiftUI. This DSL just describes the node's layout. You should avoid to create a new node inside layout. Since
layoutSpecThatFitswould be called multiple times.
Layouts
- Basic Layouts
VStackLayout HStackLayout ZStackLayout WrapperLayout AbsoluteLayout CenterLayout RelativeLayout InsetLayout OverlayLayout BackgroundLayout AspectRatioLayout SpacerLayout
- Advanced Layouts
VGridLayout AnyLayout * Switch
Modifiers
- WIP
Composable components
TextureSwiftSupport provides us a lot of components that help to create a new component with compositioning from small components.
Technically, composing increases a number of view or layer in run-time. It might reduce the performance a bit. But most of the cases, that won't be matters.
- MaskingNode
- BackgroundNode
- OverlayNode
- PaddingNode
- WrapperCellNode
- WrapperNode
- ShapeLayerNode
- ShapeRenderingNode
- InteractiveNode
- AnyDisplayNode
- GradientNode
Package Metadata
Repository: fluidgroup/textureswiftsupport
Default branch: main
README: README.md