🤥 Sugar for Auto Layout. Generate pure native NSLayoutConstraint.
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
Assets
JustLayout
Sample
docs
.gitignore
JustLayout.podspec
LICENSE.md
Package.swift
README.adoc
README.html
_config.yml

README.adoc

Meet JustLayout

JustLayout

Author EMail MIT
Version Platforms Swift
Build Passing Cocoapods Carthage SPM

🏵 Introduction

JustLayout is an elegant Auto Layout sugar for iOS and tvOS.

📋 Requirements

Type Requirement

Platform

iOS

8.0+

macOS

N/A

tvOS

10.2

watchOS

N/A

Linux

N/A

IDE

Xcode

9.3+

Language

Swift

4.1+

📲 Installation

CocoaPods

JustLayout is available on CocoaPods.

use_frameworks!
pod 'JustLayout'

# for DSL usage:
#pod 'JustLayout/DSL

Manually

Copy all files in the JustLayout directory into your project.

🛌 Dependency

N/A

❤️ Contribution

You are welcome to fork and submit pull requests.

🔖 License

JustLayout is open-sourced software, licensed under the MIT license.

🔫 Usage

import JustLayout

Visually

func visually() {
    view.layout(
        100,
        |-topView-| ~ 80,
        8,
        |-centerView-(>=100)-| ~ 80,
        "",
        |bottomView| ~ 80,
        0
    )
}

Chainable

func chainable() {
    centerView.centerInContainer().width(100).aspectratio(followHeight: 100%)
    topView.left(centerView, -20).top(centerView, -20).size(centerView)
    bottomView.left(centerView, 20).top(centerView, 20).size(centerView)
}
AppIcon_480.png

Operator-Based

func operatorBased() {
    bottomView.centerXAttribute == view.centerXAttribute
    bottomView.centerYAttribute == view.centerYAttribute
    bottomView.widthAttribute == 80
    bottomView.heightAttribute == bottomView.widthAttribute

    centerView.rightAttribute == bottomView.centerXAttribute
    centerView.topAttribute == bottomView.centerYAttribute
    centerView.widthAttribute == bottomView.widthAttribute
    centerView.heightAttribute == bottomView.heightAttribute

    topView.leftAttribute == centerView.rightAttribute
    topView.topAttribute == centerView.topAttribute
    topView.widthAttribute == 50 % centerView.widthAttribute
    topView.heightAttribute == centerView.heightAttribute
}

The Operator-Based layout is now chainable after version 1.4.0. For example:

someView.following(leftView).below(topView).size(centerView)
someView.leftAttribute == leftView.rightAttribute
someView.topAttribute == topView.bottomAttribute
someView.widthAttribute == centerView.widthAttribute
someView.heightAttribute == centerView.heightAttribute

DSL

After version 1.5.0 you can now use the JustLayoutDSL:

centerView.just.centerInContainer().width(100).aspectratio(100%)
topView.just.left(centerView, -20).top(centerView, -20).size(centerView)
bottomView.just.left(centerView, 20).top(centerView, 20).size(centerView)
Important

Please add pod 'JustLayout/DSL' to your `Podfile first.


Made with [heart] by Elias Abel.