TextureSwiftSupport - 提高您的生产力
这是一个库,用于在 Swift 中让 Texture(AsyncDisplayKit) 更强大。
- 可读的布局 DSL
- 可组合的组件
您可能需要使用 TextureBridging
来将应用程序中的 AutoLayout 世界集成进去。
要求
Swift 5.3+
生产环境中的应用场景
布局 DSL
使用 resultBuilders
,可以使 ASLayoutSpec
更加简单易读,就像 SwiftUI 的声明。
之前
override func layoutSpecThatFits(_ constrainedSize: ASSizeRange) -> ASLayoutSpec {
ASStackLayoutSpec(
direction: .vertical,
spacing: 0,
justifyContent: .start,
alignItems: .start,
children: [
self.textNode1,
self.textNode2,
self.textNode3,
]
)
}
之后
override func layoutSpecThatFits(_ constrainedSize: ASSizeRange) -> ASLayoutSpec {
LayoutSpec {
VStackLayout {
self.textNode1
self.textNode2
self.textNode3
}
}
}
使用 LayoutSpec
包装后,我们可以在该块中编写 DSL
更复杂的示例
LayoutSpec {
if flag {
VStackLayout {
HStackLayout(justifyContent: .center) {
iconNode
.padding(.top, 24)
.padding(.bottom, 16)
}
.background(gradientNode)
}
} else {
gradientNode
}
}
⚠️ 请留意此 DSL 与 SwiftUI 之间的区别。
此 DSL 仅描述节点的布局。您应该避免在布局中创建新的节点。
因为layoutSpecThatFits
会被多次调用。
布局
-
基本布局
- VStackLayout
- HStackLayout
- ZStackLayout
- WrapperLayout
- AbsoluteLayout
- CenterLayout
- RelativeLayout
- InsetLayout
- OverlayLayout
- BackgroundLayout
- AspectRatioLayout
- SpacerLayout
-
高级布局
- VGridLayout
- AnyLayout
- 开关
修饰符
- WIP
可组合组件
TextureSwiftSupport
为我们提供了许多组件,帮助我们通过组合小组件创建新的组件。
技术上,组合在运行时会增加视图或层数量。这可能会稍微降低性能。
但在大多数情况下,这不会成为问题。
- MaskingNode
- BackgroundNode
- OverlayNode
- PaddingNode
- WrapperCellNode
- WrapperNode
- ShapeLayerNode
- ShapeRenderingNode
- InteractiveNode
- AnyDisplayNode
- GradientNode
安装
CocoaPods
pod 'TextureSwiftSupport'
☝️ 技术上,podspec 描述了多个 subspec,您可以只安装您想要的这个库的一部分。
作者
Muukii [email protected]