0001    //
0002    //  SnapKit
0003    //
0004    //  Copyright (c) 2011-2015 SnapKit Team - https://github.com/SnapKit
0005    //
0006    //  Permission is hereby granted, free of charge, to any person obtaining a copy
0007    //  of this software and associated documentation files (the "Software"), to deal
0008    //  in the Software without restriction, including without limitation the rights
0009    //  to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
0010    //  copies of the Software, and to permit persons to whom the Software is
0011    //  furnished to do so, subject to the following conditions:
0012    //
0013    //  The above copyright notice and this permission notice shall be included in
0014    //  all copies or substantial portions of the Software.
0015    //
0016    //  THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
0017    //  IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
0018    //  FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
0019    //  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
0020    //  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
0021    //  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
0022    //  THE SOFTWARE.
0023    
0024    #if os(iOS) || os(tvOS)
0025    import UIKit
0026    #else
0027    import AppKit
0028    #endif
0029    
0030    /**
0031        Used to make constraints
0032    */
0033    public class ConstraintMaker
ConstraintMaker.swift:139
    internal class func prepareConstraints(view view: View, file: String = "Unknown", line: UInt = 0, @noescape closure: (make: ConstraintMaker) -> Void) -> [Constraint] {
ConstraintMaker.swift:140
        let maker = ConstraintMaker(view: view, file: file, line: line)
ConstraintMaker.swift:151
    internal class func makeConstraints(view view: View, file: String = "Unknown", line: UInt = 0, @noescape closure: (make: ConstraintMaker) -> Void) {
ConstraintMaker.swift:153
        let maker = ConstraintMaker(view: view, file: file, line: line)
ConstraintMaker.swift:164
    internal class func remakeConstraints(view view: View, file: String = "Unknown", line: UInt = 0, @noescape closure: (make: ConstraintMaker) -> Void) {
ConstraintMaker.swift:166
        let maker = ConstraintMaker(view: view, file: file, line: line)
ConstraintMaker.swift:178
    internal class func updateConstraints(view view: View, file: String = "Unknown", line: UInt = 0, @noescape closure: (make: ConstraintMaker) -> Void) {
ConstraintMaker.swift:180
        let maker = ConstraintMaker(view: view, file: file, line: line)
View+SnapKit.swift:130
    public func snp_prepareConstraints(file: String = __FILE__, line: UInt = __LINE__, @noescape closure: (make: ConstraintMaker) -> Void) -> [Constraint] {
View+SnapKit.swift:131
        return ConstraintMaker.prepareConstraints(view: self, file: file, line: line, closure: closure)
View+SnapKit.swift:139
    public func snp_makeConstraints(file: String = __FILE__, line: UInt = __LINE__, @noescape closure: (make: ConstraintMaker) -> Void) -> Void {
View+SnapKit.swift:140
        ConstraintMaker.makeConstraints(view: self, file: file, line: line, closure: closure)
View+SnapKit.swift:150
    public func snp_updateConstraints(file: String = __FILE__, line: UInt = __LINE__, @noescape closure: (make: ConstraintMaker) -> Void) -> Void {
View+SnapKit.swift:151
        ConstraintMaker.updateConstraints(view: self, file: file, line: line, closure: closure)
View+SnapKit.swift:159
    public func snp_remakeConstraints(file: String = __FILE__, line: UInt = __LINE__, @noescape closure: (make: ConstraintMaker) -> Void) -> Void {
View+SnapKit.swift:160
        ConstraintMaker.remakeConstraints(view: self, file: file, line: line, closure: closure)
View+SnapKit.swift:167
        ConstraintMaker.removeConstraints(view: self)
{ 0034 0035 /// left edge 0036 public var left: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Left) } 0037 0038 /// top edge 0039 public var top: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Top) } 0040 0041 /// right edge 0042 public var right: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Right) } 0043 0044 /// bottom edge 0045 public var bottom: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Bottom) } 0046 0047 /// leading edge 0048 public var leading: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Leading) } 0049 0050 /// trailing edge 0051 public var trailing: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Trailing) } 0052 0053 /// width dimension 0054 public var width: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Width) } 0055 0056 /// height dimension 0057 public var height: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Height) } 0058 0059 /// centerX dimension 0060 public var centerX: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.CenterX) } 0061 0062 /// centerY dimension 0063 public var centerY: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.CenterY) } 0064 0065 /// baseline position 0066 public var baseline: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Baseline) } 0067 0068 /// firse baseline position 0069 @available(iOS 8.0, *) 0070 public var firstBaseline: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.FirstBaseline) } 0071 0072 /// left margin 0073 @available(iOS 8.0, *) 0074 public var leftMargin: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.LeftMargin) } 0075 0076 /// right margin 0077 @available(iOS 8.0, *) 0078 public var rightMargin: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.RightMargin) } 0079 0080 /// top margin 0081 @available(iOS 8.0, *) 0082 public var topMargin: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.TopMargin) } 0083 0084 /// bottom margin 0085 @available(iOS 8.0, *) 0086 public var bottomMargin: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.BottomMargin) } 0087 0088 /// leading margin 0089 @available(iOS 8.0, *) 0090 public var leadingMargin: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.LeadingMargin) } 0091 0092 /// trailing margin 0093 @available(iOS 8.0, *) 0094 public var trailingMargin: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.TrailingMargin) } 0095 0096 /// centerX within margins 0097 @available(iOS 8.0, *) 0098 public var centerXWithinMargins: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.CenterXWithinMargins) } 0099 0100 /// centerY within margins 0101 @available(iOS 8.0, *) 0102 public var centerYWithinMargins: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.CenterYWithinMargins) } 0103 0104 /// top + left + bottom + right edges 0105 public var edges: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Edges) } 0106 0107 /// width + height dimensions 0108 public var size: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Size) } 0109 0110 // centerX + centerY positions 0111 public var center: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Center) } 0112 0113 // top + left + bottom + right margins 0114 @available(iOS 8.0, *) 0115 public var margins: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Margins) } 0116 0117 // centerX + centerY within margins 0118 @available(iOS 8.0, *) 0119 public var centerWithinMargins: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.CenterWithinMargins) } 0120 0121 internal init
ConstraintMaker.swift:140
        let maker = ConstraintMaker(view: view, file: file, line: line)
ConstraintMaker.swift:153
        let maker = ConstraintMaker(view: view, file: file, line: line)
ConstraintMaker.swift:166
        let maker = ConstraintMaker(view: view, file: file, line: line)
ConstraintMaker.swift:180
        let maker = ConstraintMaker(view: view, file: file, line: line)
(view: View, file: String, line: UInt) { 0122 self.view = view 0123 self.file = file 0124 self.line = line 0125 } 0126 0127 internal let file
ConstraintMaker.swift:123
        self.file = file
ConstraintMaker.swift:145
            constraint.makerFile = maker.file
ConstraintMaker.swift:158
            constraint.makerFile = maker.file
ConstraintMaker.swift:172
            constraint.makerFile = maker.file
ConstraintMaker.swift:185
            constraint.makerFile = maker.file
: String 0128 internal let line
ConstraintMaker.swift:124
        self.line = line
ConstraintMaker.swift:146
            constraint.makerLine = maker.line
ConstraintMaker.swift:159
            constraint.makerLine = maker.line
ConstraintMaker.swift:173
            constraint.makerLine = maker.line
ConstraintMaker.swift:186
            constraint.makerLine = maker.line
: UInt 0129 internal let view
ConstraintMaker.swift:122
        self.view = view
ConstraintMaker.swift:133
        let item = ConstraintItem(object: self.view, attributes: attributes)
: View 0130 internal var constraintDescriptions
ConstraintMaker.swift:135
        self.constraintDescriptions.append(constraintDescription)
ConstraintMaker.swift:143
        let constraints = maker.constraintDescriptions.map { $0.constraint }
ConstraintMaker.swift:156
        let constraints = maker.constraintDescriptions.map { $0.constraint as! ConcreteConstraint }
ConstraintMaker.swift:170
        let constraints = maker.constraintDescriptions.map { $0.constraint as! ConcreteConstraint }
ConstraintMaker.swift:183
        let constraints = maker.constraintDescriptions.map { $0.constraint as! ConcreteConstraint}
= [ConstraintDescription]() 0131 0132 internal func makeConstraintDescription
ConstraintMaker.swift:36
    public var left: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Left) }
ConstraintMaker.swift:39
    public var top: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Top) }
ConstraintMaker.swift:42
    public var right: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Right) }
ConstraintMaker.swift:45
    public var bottom: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Bottom) }
ConstraintMaker.swift:48
    public var leading: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Leading) }
ConstraintMaker.swift:51
    public var trailing: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Trailing) }
ConstraintMaker.swift:54
    public var width: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Width) }
ConstraintMaker.swift:57
    public var height: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Height) }
ConstraintMaker.swift:60
    public var centerX: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.CenterX) }
ConstraintMaker.swift:63
    public var centerY: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.CenterY) }
ConstraintMaker.swift:66
    public var baseline: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Baseline) }
ConstraintMaker.swift:70
    public var firstBaseline: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.FirstBaseline) }
ConstraintMaker.swift:74
    public var leftMargin: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.LeftMargin) }
ConstraintMaker.swift:78
    public var rightMargin: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.RightMargin) }
ConstraintMaker.swift:82
    public var topMargin: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.TopMargin) }
ConstraintMaker.swift:86
    public var bottomMargin: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.BottomMargin) }
ConstraintMaker.swift:90
    public var leadingMargin: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.LeadingMargin) }
ConstraintMaker.swift:94
    public var trailingMargin: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.TrailingMargin) }
ConstraintMaker.swift:98
    public var centerXWithinMargins: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.CenterXWithinMargins) }
ConstraintMaker.swift:102
    public var centerYWithinMargins: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.CenterYWithinMargins) }
ConstraintMaker.swift:105
    public var edges: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Edges) }
ConstraintMaker.swift:108
    public var size: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Size) }
ConstraintMaker.swift:111
    public var center: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Center) }
ConstraintMaker.swift:115
    public var margins: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.Margins) }
ConstraintMaker.swift:119
    public var centerWithinMargins: ConstraintDescriptionExtendable { return self.makeConstraintDescription(ConstraintAttributes.CenterWithinMargins) }
(attributes: ConstraintAttributes) -> ConstraintDescription { 0133 let item = ConstraintItem(object: self.view, attributes: attributes) 0134 let constraintDescription = ConstraintDescription(fromItem: item) 0135 self.constraintDescriptions.append(constraintDescription) 0136 return constraintDescription 0137 } 0138 0139 internal class func prepareConstraints
View+SnapKit.swift:131
        return ConstraintMaker.prepareConstraints(view: self, file: file, line: line, closure: closure)
(view view: View, file: String = "Unknown", line: UInt = 0, @noescape closure: (make: ConstraintMaker) -> Void) -> [Constraint] { 0140 let maker = ConstraintMaker(view: view, file: file, line: line) 0141 closure(make: maker) 0142 0143 let constraints = maker.constraintDescriptions.map { $0.constraint } 0144 for constraint in constraints { 0145 constraint.makerFile = maker.file 0146 constraint.makerLine = maker.line 0147 } 0148 return constraints 0149 } 0150 0151 internal class func makeConstraints
View+SnapKit.swift:140
        ConstraintMaker.makeConstraints(view: self, file: file, line: line, closure: closure)
(view view: View, file: String = "Unknown", line: UInt = 0, @noescape closure: (make: ConstraintMaker) -> Void) { 0152 view.translatesAutoresizingMaskIntoConstraints = false 0153 let maker = ConstraintMaker(view: view, file: file, line: line) 0154 closure(make: maker) 0155 0156 let constraints = maker.constraintDescriptions.map { $0.constraint as! ConcreteConstraint } 0157 for constraint in constraints { 0158 constraint.makerFile = maker.file 0159 constraint.makerLine = maker.line 0160 constraint.installOnView(updateExisting: false) 0161 } 0162 } 0163 0164 internal class func remakeConstraints
View+SnapKit.swift:160
        ConstraintMaker.remakeConstraints(view: self, file: file, line: line, closure: closure)
(view view: View, file: String = "Unknown", line: UInt = 0, @noescape closure: (make: ConstraintMaker) -> Void) { 0165 view.translatesAutoresizingMaskIntoConstraints = false 0166 let maker = ConstraintMaker(view: view, file: file, line: line) 0167 closure(make: maker) 0168 0169 self.removeConstraints(view: view) 0170 let constraints = maker.constraintDescriptions.map { $0.constraint as! ConcreteConstraint } 0171 for constraint in constraints { 0172 constraint.makerFile = maker.file 0173 constraint.makerLine = maker.line 0174 constraint.installOnView(updateExisting: false) 0175 } 0176 } 0177 0178 internal class func updateConstraints
View+SnapKit.swift:151
        ConstraintMaker.updateConstraints(view: self, file: file, line: line, closure: closure)
(view view: View, file: String = "Unknown", line: UInt = 0, @noescape closure: (make: ConstraintMaker) -> Void) { 0179 view.translatesAutoresizingMaskIntoConstraints = false 0180 let maker = ConstraintMaker(view: view, file: file, line: line) 0181 closure(make: maker) 0182 0183 let constraints = maker.constraintDescriptions.map { $0.constraint as! ConcreteConstraint} 0184 for constraint in constraints { 0185 constraint.makerFile = maker.file 0186 constraint.makerLine = maker.line 0187 constraint.installOnView(updateExisting: true) 0188 } 0189 } 0190 0191 internal class func removeConstraints
ConstraintMaker.swift:169
        self.removeConstraints(view: view)
View+SnapKit.swift:167
        ConstraintMaker.removeConstraints(view: self)
(view view: View) { 0192 for existingLayoutConstraint in view.snp_installedLayoutConstraints { 0193 existingLayoutConstraint.snp_constraint?.uninstall() 0194 } 0195 } 0196 } 0197