Contents

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

- Pairs for Japan - Pairs for Global

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. Since layoutSpecThatFits would 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

Author

Muukii <muukii.app@gmail.com>

Package Metadata

Repository: fluidgroup/textureswiftsupport

Default branch: main

README: README.md