Swift wrapper of facebook/yoga, a cross-platform CSS Flexbox layout engine that is lightweight, runs asynchronously, and is far simpler than AutoLayout.
If you are new to CSS Flexbox, visit following links and have fun :)
- CSS Flexible Box Layout Module Level 1
- CSS Flexible Box Layout - CSS | MDN
- A Complete Guide to Flexbox | CSS-Tricks
let node = Node( size: CGSize(width: 300, height: 100), children: [ Node(size: CGSize(width: 20, height: 20)), Node(size: CGSize(width: 40, height: 80)), Node(size: CGSize(width: 60, height: 40)), ], flexDirection: .row, justifyContent: ... // .flexStart, .center, .flexEnd, .spaceBetween, .spaceAround ) let view = ... // prepare view hierarchy DispatchQueue.global.async { let layout = node.layout() DispatchQueue.main.async { layout.apply(view) } }This will result:
Please see FlexboxPlayground for more examples.
The original idea is from joshaber/SwiftBox.
