Need help with Cassowary?
Click the “chat” button below for chat support from the developer who created it, or find similar developers for support.

About the developer

inamiy
453 Stars 13 Forks MIT License 4 Commits 0 Opened issues

Description

An incremental linear constraint-solving algorithm (Auto Layout) in Swift.

Services available

!
?

Need anything else?

Contributors list

No Data

Cassowary

An incremental linear constraint-solving algorithm (Auto Layout) in Swift, originally from the paper: Solving Linear Arithmetic Constraints for User Interface Applications (1997)

This repository consists of 3 frameworks:

  • Simplex: Simplex tableau and its common operations
  • Cassowary: Core constraint-solving algorithm using Simplex
  • CassowaryUI: UIKit/AppKit wrapper on top of Cassowary

How to use

CassowaryUI

import Cassowary
import CassowaryUI

let rootSize = CGSize(width: 320, height: 480) var solver = CassowaryUI.Solver()

try! solver.addConstraints(view1, view2) { v1, v2 in return [ // v1 has fixed size (4:3 aspect ratio) v1.width == rootSize.width - 40, v1.height == v1.width * 3 / 4,

    // `v2` has fixed origin.x & width (flexible in vertical)
    v2.width == v1.width,
    v1.centerX == rootFrame.width / 2,
    v2.centerX == v1.centerX,

    // equal spacing (vertical)
    v1.top == 40 ~ .high,
    v2.top - v1.bottom == v1.top ~ .high,
    rootSize.height - v2.bottom == v1.top ~ .high,
]

} solver.applyLayout()

This will result:

>
   | >
   | >

Acknowledgments

References

License

MIT

We use cookies. If you continue to browse the site, you agree to the use of cookies. For more information on our use of cookies please see our Privacy Policy.