Skip to content

maximkrouk/SUILayout

Repository files navigation

SUILayout 🍃

Lightweight sizing dsl for SwiftUI

Sometimes it's pretty annoying to type something like .frame(minWidth: 0, maxWidth: .infinity, minHeight: 0, maxHeight: .infinity) , so I decided to extract common cases to this tiny framework.

Usage

import SUILayout
import SwiftUI

struct MyView: View {

    var body: some View {
        Text("Awesome SwiftUI")
      			.foregroundColor(.white)
            .pin.toLeft()
            .pin.size(to: .square(240))
      			.background(Color.black)
    }

}

Pins:

  • toScreen(multipliedBy multipliers: CGPoint)
  • toScreen(insetBy inset: CGPoint = .zero)
  • sizeToScreen(multipliedBy multipliers: CGPoint)
  • sizeToScreen(insetBy insets: CGPoint = .zero)
  • widthToScreen(multipliedBy multiplier: CGFloat)
  • widthToScreen(insetBy inset: CGFloat = 0)
  • heightToScreen(multipliedBy multiplier: CGFloat)
  • heightToScreen(insetBy inset: CGFloat = 0)
  • toSuperview()
  • sizeToSuperview(multipliedBy multipliers: CGPoint)
  • size(to size: CGSize)
  • sizeToSuperview()
  • widthToSuperview()
  • widthToSuperview(multipliedBy multiplier: CGFloat)
  • widthToSuperview(insetBy inset: CGFloat)
  • heightToSuperview()
  • heightToSuperview(multipliedBy multiplier: CGFloat)
  • heightToSuperview(insetBy inset: CGFloat)
  • toTop()
  • toBottom()
  • toLeft()
  • toRight()

Requirements

  • ⌨️ XCode 11.0+
  • 🖥 OSX 10.15+
  • 📱 iOS 13.0+

Installation

Primary:

Via SwiftPM, just add a link to this repo to your Package.swift file.

.package(url: "https://github.com/maximkrouk/SUILayout.git", from: "3.0.0")

Or use XCodePM.

Secondary:

SUILayout is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod 'SUILayout'

and run pod install from the terminal.


Feel free to contribute or communicate.

About

SwiftUI sizing DSL, inspired by SnapKit.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •