Swiftpack.co - Package - Andrei-Popilian/Laly

a0d38835-1277-4a95-a975-66693b8c3fec_200x200

Laly is an lightweight framework ment to reduce the ammount of code used while using NSLayoutAnchor or NSLayoutConstraint. It's easy to learn, read/write and debug.

Table of Contents

  1. Setup
  2. Problems, Suggestions, Pull Requests?

Setup

Compatibility

The current release of Laly supports the following versions of iOS and OS X:

  • Xcode
    • Language Support: Swift (5.1)
    • Fully Compatible With: Xcode 10.0
  • iOS
    • Fully Compatible With: iOS 9.0

Using Carthage

  1. Add the Andrei-Popilian/Laly project to your Cartfile.
github "Andrei-Popilian/Laly" == 1.3.0
  1. Run carthage update, then follow the additional steps required to add the framework into your project.

  2. Import the Laly framework/module.

  • Swift: import Laly

Using Swift Package Manager

  1. Xcode -> File -> Swift Packages -> Add Package Dependecy...

  2. Add package dependecy URL: https://github.com/Andrei-Popilian/Laly.git

  3. Use version 1.3.0 +

  4. Import the Laly framework/module.

  • Swift: import Laly

That's it - now go write some beautiful Auto Layout code!

Examples

NSLayoutConstraint.activate([
   someView.widthAnchor.constraint(equalToConstant: 70),
   someView.heightAnchor.constraint(equalToConstant: 15),
   someView.centerXAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.centerXAnchor),
   someView.centerYAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.centerYAnchor),
])

==

    someView.laly.size(.height(15), .width(70))
    someView.laly.center(to: self.view.safeAreaLayoutGuide, on: .x, .y)

OR

 NSLayoutConstraint.activate([
   someView.topAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.topAnchor, constant: 20),
   someView.bottomAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.topAnchor, constant: -20),
   someView.leadingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.leadingAnchor, constant: 20),
   someView.trailingAnchor.constraint(equalTo: self.view.safeAreaLayoutGuide.trailingAnchor, constant: -20),
 ])

==

    someView.laly.edges(to: self.view.safeAreaLayoutGuide, ofIdentation: 20)

OR

 NSLayoutConstraint.activate([
    someView.topAnchor.constraint(lessThanOrEqualTo: self.view.safeAreaLayoutGuide.topAnchor, constant: 20),
    someView.trailingAnchor.constraint(greaterThanOrEqualTo: self.view.safeAreaLayoutGuide.trailingAnchor, constant: -15),
    someView.leadingAnchor.constraint(greaterThanOrEqualTo: self.view.safeAreaLayoutGuide.leadingAnchor, constant: 15),
    someView.bottomAnchor.constraint(greaterThanOrEqualTo: self.view.safeAreaLayoutGuide.topAnchor, constant: -20),
 ])

==

   someView.laly.edges(to: self.view.safeAreaLayoutGuide, of: .top(<=20), .trail(>=(-15)), .lead(>=15), .bot(>=(-20)))

OR

 NSLayoutConstraint.activate([
    someView.widthAnchor.constraint(equalTo: self.view.widthAnchor),
    someView.heightAnchor.constraint(equalTo: self.view.heightAnchor),  
 ])

==

   someView.laly.size(of: self.view)

OR

NSLayoutConstraint.activate([
   someView.topAnchor.constraint(equalTo: secondView.topAnchor, constant: 20),
   someView.bottomAnchor.constraint(equalTo: secondView.topAnchor, constant: 100)
])

==

   someView.laly.edges(to: secondView, relations: (.top, to: .topBy(10)), (.bot, to: .topBy(100)))

And so on and so forth..... (Please check Laly's documentation inside Xcode)

NOTE: all the constraints generated by Laly are already activated, to deactivate them call .deactivated() on each one or on an array containing multiple constraints

   let constraints = someView.laly.edges(to: self.view.safeAreaLayoutGuide, of: .top(<=20), .trail(>=(-15)), .lead(>=15), .bot(>=(-20)))
   let deactivatedConstraints = constraints.deactivated()

Problems, Suggestions, Pull Requests?

Please open a new Issue here if you run into a problem specific to Laly, have a feature request, or want to share a comment. Note that general Auto Layout questions should be asked on Stack Overflow.

Pull requests are encouraged and greatly appreciated! Please try to maintain consistency with the existing code style. If you're considering taking on significant changes or additions to the project, please communicate in advance by opening a new Issue. This allows everyone to get onboard with upcoming changes, ensures that changes align with the project's design philosophy, and avoids duplicated work.

Github

link
Stars: 2
Help us keep the lights on

Dependencies

Used By

Total: 0