TextureSwiftSupport
TextureSwiftSupport copied to clipboard
A library that gains Texture(AsyncDisplayKit) more power in Swift.
TextureSwiftSupport - Gains up your productivity
This is a library to gain Texture(AsyncDisplayKit) more power in Swift.
- Readable Layout DSL
- Composable components
And you might need to use TextureBridging to integrate with AutoLayout world in your applications.
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.
πΊπ» You want to use this in AutoLayout?
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.
SincelayoutSpecThatFitswould 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
Installation
CocoaPods
pod 'TextureSwiftSupport'
βοΈ Technically, podspec describes multiple subspecs, you can install a part of this library what you want.
Author
Muukii [email protected]