TextureSwiftSupport 3.19.0

TextureSwiftSupport 3.19.0

muukii 维护。



TextureSwiftSupport - 提高您的生产力

这是一个库,用于在 Swift 中让 Texture(AsyncDisplayKit) 更强大。

  • 可读的布局 DSL
  • 可组合的组件

您可能需要使用 TextureBridging 来将应用程序中的 AutoLayout 世界集成进去。

要求

Swift 5.3+

生产环境中的应用场景

布局 DSL

使用 resultBuilders,可以使 ASLayoutSpec 更加简单易读,就像 SwiftUI 的声明。

🕺🏻 您想在 AutoLayout 中使用这个吗?

之前

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]