Go to file
Robert Payne 851bbf8dd8
Feature/release 5.6 (#746)
* Add support for UILayoutPriority as priority target. (#466)

* Add support for UILayoutPriority as priority target.

* Fixed for tvOS

* Add update(priority: ConstraintPriority) method (#467)

* Add update(priority: ConstraintPriority) method

* Fix copy-paste error

* Add Swift Package Manager support (#501)

* Swift4.2 (#516)

* make ConstraintAttributes conform to ExpressibleByIntegerLiteral (#520)

* Adds 'constraint.isActive = bool' to Constraint (#496)

* delegate identical 'constraint creation' code to 'prepareConstraints'

* adds 'set(isActivated:)' method to call appropriate 'activate/deactivate' based on bool

cleans up about 30 lines of

    if foo { activate }
    else { deactivate }

code in my app

* instead of 'set(isActivated:)', use 'isActive = value'

* Add swift version to podspec

* Update podspec

* Update podspec

* Update project to get rid of Migration Warning (#547)

* Update Swift Language version to 4.2 under build settings (#551)

* Update swift language version to 4.2 in build settings

* Update podspec

* Remove Swift Version file

* Remove Package.swift, SnapKit is not SwiftPM compatible anyways

* Update Podspec

* Update version in Podspec

* Support swift 5.0 (#570)

* Update swift version 5.0

* Remove needless access control

* Fix misused "Available" annotations

* Support @unknown default

* Support swift 5.0 in test code

* Update podspec

* Update travis CI

* Code review by @freak4pc

* Add constraint for Swift version

* Fix build failed

* [EXC_BAD_ACCESS] Update LayoutConstraint == operator to support iOS 10 and higher changes (#574)

* @sashabelonogov Update LayoutConstraint == operator to support iOS 10 and higher changes

* Simplify return statement of the LayoutConstraint == operator

* Fix incorrect behavior of inset with center and baseline anchors (#569)

* Fix insets adjusting center attributes incorrectly

* Fix insets adjusting baseline attributes incorrectly

* Add back Package.swift for SwiftPM compatibility (#559)

reverts 477fffae4c

* Update podspec

* Update min target versions

* Update min target versions

* Update README.md

* Update README.md

* Revert "[EXC_BAD_ACCESS] Update LayoutConstraint == operator to support iOS 10 and higher changes (#574)" (#593)

This reverts commit bc2b0b9332.

* Update Podspec

* Bump min version requirements

* Fix layout constraint comparison

* Fix equality check for iOS

* Adds support for NSDirectionalEdgeInsets as an inset constant (#594)

* Make ConstraintViewDSL content priorities nonmutating (#586)

* Adds two new compositions – DirectionalEdges and DirectionalMargins (#595)

* WIP

* Add directional margins

* Whitespace

* Add Playground Sample (#608)

* added updates to Package.swift so it can be imported with Xcode 11 (#615)

* Revert #574

* Update Podspec

* Add background color to quick start box in README.md (#619)

* add-dimensional-edges: add ConstraintItems horizontalEdges, verticalEdges, directionalHorizontalEdges and directionalVerticalEdges as convenience items to express left+right, top+bottom or leading+trailing (#637)

* Update deprecations to allow Xcode to auto-fixup. (#634)

* Migrate to Xcode 11 and updated travis.yml (#629)

* Migrate to Xcode 11 and updated travis.yml

* Travis to support Xcode 11

* project.pbxproj: Update to recommended settings. (#627)

* Add test assert to unit test testCanSetLabel. (#625)

* Add back support for OS X 10.11 (#645)

* Use << for ConstraintAttributes options (#659)

* Use << for ConstraintAttributes options

* iPhone 6s is not supported by the latest Xcode

* Add method getting constraint with closure to ConstraintMakerRelatable (#663)

* add ConstraintMakerRelatable extension

* fix fatalError message

Co-authored-by: Jimi <jimi-hpcnt@hpcnt.com>

* Xcode 12 and SwiftPM enhancements

* Update README to include SPM installation notes (#673)

* Fix typo

* Remove duplicate file

* xcodeproject configuration enhancement for localization (#584)

Co-authored-by: AmrAngry <c_amr.elghadban@smartdubai.ae>

* Updates to project files

* Dynamic Product (#710)

This PR adds a dynamic product to SnapKit.
Having a dynamic product is important in modular project structures; multiple packages may be using SnapKit, and this allows that support without the end-user have to wrap SnapKit in their own package that exposes it and using that package in lieu of SnapKit.

* Fix warning about `class` (#714)

* Added Example-iOS.xcdodeproj and fixed examples (#707)

* Update README.md, add missing Migration Guides section (#721)

* Make ConstraintMaker.item public (#693)

* Typo source directory in Podspec (#738)

Source directory has been renamed in 18608ead65

* Release 5.6

* Update urls in readme
* Update podspec version

Co-authored-by: Benjamin Chrobot <benjamin.blair.chrobot@gmail.com>
Co-authored-by: Linus Unnebäck <linus@folkdatorn.se>
Co-authored-by: Mauro Vime Castillo <mvimeapps@gmail.com>
Co-authored-by: o( ̄へ ̄)o <guzhenhuaGitHub@users.noreply.github.com>
Co-authored-by: Colin T.A. Gray <colinta@gmail.com>
Co-authored-by: Shai Mishali <freak4pc@gmail.com>
Co-authored-by: Ibrahim Koteish <ikteish@yahoo.com>
Co-authored-by: Jungwon An <kawoou@kawoou.kr>
Co-authored-by: Alexander Belonogov <sashabelonogov@gmail.com>
Co-authored-by: Christian Schnorr <christian.schnorr@me.com>
Co-authored-by: Josh Converse <josh.converse@gmail.com>
Co-authored-by: Vitalii Budnik <nekrich@users.noreply.github.com>
Co-authored-by: Shiva Huang <shiva.tw@gmail.com>
Co-authored-by: Max Cobb <5754073+maxxfrazer@users.noreply.github.com>
Co-authored-by: Liam Elmore <32336260+iosmo@users.noreply.github.com>
Co-authored-by: Sven Driemecker <sven.dr@gmx.de>
Co-authored-by: Alex Simpson <alexandersimpson94@gmail.com>
Co-authored-by: pushp1989 <54930194+pushp1989@users.noreply.github.com>
Co-authored-by: Ben Yohay <ben@lightricks.com>
Co-authored-by: Natascha Fadeeva <nataschafadeeva@aol.de>
Co-authored-by: Wang, Chi <patr0nus@users.noreply.github.com>
Co-authored-by: Roman Podymov <podymfrombryansk@yandex.ru>
Co-authored-by: wotjd <wotjd971102@gmail.com>
Co-authored-by: Jimi <jimi-hpcnt@hpcnt.com>
Co-authored-by: Samuel Eshun <samueleshun15@gmail.com>
Co-authored-by: Amr Elghadban <amr.elghadban@gmail.com>
Co-authored-by: AmrAngry <c_amr.elghadban@smartdubai.ae>
Co-authored-by: Hesham Salman <iron-ham@github.com>
Co-authored-by: Mr. Ming <minglq.9@gmail.com>
Co-authored-by: Teameh <tiemevanveen@hotmail.com>
Co-authored-by: Josip Rezić <josip.rezic@hotmail.com>
Co-authored-by: Rhett Tuan <devindwan@gmail.com>
Co-authored-by: Damien Debin <ddebin@users.noreply.github.com>
Co-authored-by: Robert Payne <robertjpayne@Roberts-MacBook-Pro.local>
2022-04-13 16:06:06 +12:00
CodeSnippets Update code snippets 2016-12-26 00:25:57 +13:00
Documentation Added quirks section to migration guide 2016-12-26 01:05:48 +13:00
Example-iOS Feature/release 5.6 (#746) 2022-04-13 16:06:06 +12:00
SnapKit.xcodeproj Feature/release 5.6 (#746) 2022-04-13 16:06:06 +12:00
SnapKit.xcworkspace Feature/release 5.6 (#746) 2022-04-13 16:06:06 +12:00
SnapKitPlayground.playground Feature/release 5.6 (#746) 2022-04-13 16:06:06 +12:00
Sources Feature/release 5.6 (#746) 2022-04-13 16:06:06 +12:00
Supporting Files Feature/release 5.6 (#746) 2022-04-13 16:06:06 +12:00
Tests/SnapKitTests Feature/release 5.6 (#746) 2022-04-13 16:06:06 +12:00
.gitignore Feature/release 5.6 (#746) 2022-04-13 16:06:06 +12:00
.travis.yml Feature/release 5.6 (#746) 2022-04-13 16:06:06 +12:00
CONTRIBUTING.md Update CONTRIBUTING.md 2016-09-20 16:23:17 +12:00
ISSUE_TEMPLATE.md Update ISSUE_TEMPLATE.md 2016-09-22 22:21:36 +12:00
LICENSE Snap is now SnapKit 2015-04-15 23:07:50 +12:00
Package.swift Feature/release 5.6 (#746) 2022-04-13 16:06:06 +12:00
README.md Feature/release 5.6 (#746) 2022-04-13 16:06:06 +12:00
SnapKit.podspec Feature/release 5.6 (#746) 2022-04-13 16:06:06 +12:00

README.md

SnapKit is a DSL to make Auto Layout easy on both iOS and OS X.

Build Status Platform Cocoapods Compatible Carthage compatible

⚠️ To use with Swift 4.x please ensure you are using >= 4.0.0 ⚠️

⚠️ To use with Swift 5.x please ensure you are using >= 5.0.0 ⚠️

Contents

Requirements

  • iOS 10.0+ / Mac OS X 10.12+ / tvOS 10.0+
  • Xcode 10.0+
  • Swift 4.0+

Migration Guides

Communication

  • If you need help, use Stack Overflow. (Tag 'snapkit')
  • If you'd like to ask a general question, use Stack Overflow.
  • If you found a bug, open an issue.
  • If you have a feature request, open an issue.
  • If you want to contribute, submit a pull request.

Installation

CocoaPods

CocoaPods is a dependency manager for Cocoa projects. You can install it with the following command:

$ gem install cocoapods

CocoaPods 1.1.0+ is required to build SnapKit 4.0.0+.

To integrate SnapKit into your Xcode project using CocoaPods, specify it in your Podfile:

source 'https://github.com/CocoaPods/Specs.git'
platform :ios, '10.0'
use_frameworks!

target '<Your Target Name>' do
    pod 'SnapKit', '~> 5.6.0'
end

Then, run the following command:

$ pod install

Carthage

Carthage is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks.

You can install Carthage with Homebrew using the following command:

$ brew update
$ brew install carthage

To integrate SnapKit into your Xcode project using Carthage, specify it in your Cartfile:

github "SnapKit/SnapKit" ~> 5.0.0

Run carthage update to build the framework and drag the built SnapKit.framework into your Xcode project.

Swift Package Manager

Swift Package Manager is a tool for managing the distribution of Swift code. Its integrated with the Swift build system to automate the process of downloading, compiling, and linking dependencies.

Xcode 11+ is required to build SnapKit using Swift Package Manager.

To integrate SnapKit into your Xcode project using Swift Package Manager, add it to the dependencies value of your Package.swift:

dependencies: [
    .package(url: "https://github.com/SnapKit/SnapKit.git", .upToNextMajor(from: "5.0.1"))
]

Manually

If you prefer not to use either of the aforementioned dependency managers, you can integrate SnapKit into your project manually.


Usage

Quick Start

import SnapKit

class MyViewController: UIViewController {

    lazy var box = UIView()

    override func viewDidLoad() {
        super.viewDidLoad()

        self.view.addSubview(box)
        box.backgroundColor = .green
        box.snp.makeConstraints { (make) -> Void in
           make.width.height.equalTo(50)
           make.center.equalTo(self.view)
        }
    }

}

Playground

You can try SnapKit in Playground.

Note:

To try SnapKit in playground, open SnapKit.xcworkspace and build SnapKit.framework for any simulator first.

Resources

Credits

License

SnapKit is released under the MIT license. See LICENSE for details.