A Swift wrapper around Facebook's implementation of CSS's flexbox.
Example
let parent = Node(size: CGSize(width: 300, height: 300), childAlignment: .Center, direction: .Row, children: [ Node(flex: 75, margin: Edges(left: 10, right: 10), size: CGSize(width: 0, height: 100)), Node(flex: 15, margin: Edges(right: 10), size: CGSize(width: 0, height: 50)), Node(flex: 10, margin: Edges(right: 10), size: CGSize(width: 0, height: 180)), ]) let layout = parent.layout() println(layout) //{origin={0.0, 0.0}, size={300.0, 300.0}} // {origin={10.0, 100.0}, size={195.0, 100.0}} // {origin={215.0, 125.0}, size={39.0, 50.0}} // {origin={264.0, 60.0}, size={26.0, 180.0}}
Alternatively, you could apply the layout to a view hierarchy (after ensuring Auto Layout is off):
layout.apply(someView)
See SwiftBoxDemo for a demo.