Skip to content

marcbaldwin/Alto

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

50 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Alto

Create layouts that support every device and orientation.

Under Development

Alto is still being developed. A stable version will be released very soon. Star or Watch to keep updated with the progress :)

Aims

Alto was developed to be:

Readable

// Align the center of titleLabel 40px from the top of the container
titleLabel.set(.centerY, .equalTo, containerView, .top + 40)

// Align the centers of titleLabel and subtitleLabel to the container
[titleLabel, subtitleLabel].set(.centerX, .equalTo, containerView, .centerX)

Compile Safe

This compiles but will cause a crash

NSLayoutConstraint(item: titleLabel, attribute: .height, relatedBy: .equal, toItem:
containerView, attribute: .centerX, multiplier: 1.0, constant: 0.0)

This does not compile :)

titleLabel.set(.height, .equalTo, containerView, .centerX) <-- Error

Fast and Simple

  1. Small API
  • Convenience attributes to reduce code needed, see features
  • No operator overloads which can increase compile time

Well Documented

View the examples and diagrams coming soon

Features

Extra Attributes

Such as: .center, .size, .edges, .topLeft

titleLabel.set(.center, .equalTo, containerView, .center)
titleLabel.set(.topLeft, .equalTo, containerView, .bottomRight)
titleLabel.set(.edges, .equalTo, containerView, .edges - 5)

View Grouping

Apply the same constraints to many views

[titleLabel, subtitleLabel].set(.center, .equalTo, containerView, .center)

Stack Layouts

Create UIStackView style layouts just using constraints

views.stack(.vertically, margin: 20)
views.stack(.vertically, in: containerView, margin: 20)

Clear Priorities

titleLabel.set(.width, .greaterThanOrEqualTo, containerView, .width, priority: .low)

Todo List

  1. Size Classes
  2. Layout Guide Support

Resources