0001 // Copyright (c) 2016 Indragie Karunaratne. All rights reserved. 0002 // Licensed under the MIT license, see LICENSE file for more info. 0003 0004 #if os(OSX) 0005 import AppKit 0006 public typealias View= NSView 0007 public typealias LayoutPriority
SwiftAutoLayout.swift:21 extension View: LayoutRegion {}SwiftAutoLayout.swift:110 public extension View {= NSLayoutPriority 0008 0009 @available(OSX 10.11, *) 0010 public typealias LayoutGuide
SwiftAutoLayout.swift:151 public func ~(lhs: NSLayoutConstraint, rhs: LayoutPriority) -> NSLayoutConstraint {= NSLayoutGuide 0011 #elseif os(iOS) || os(tvOS) 0012 import UIKit 0013 public typealias View = UIView 0014 public typealias LayoutPriority = UILayoutPriority 0015 0016 @available(iOS 9.0, *) 0017 public typealias LayoutGuide = UILayoutGuide 0018 #endif 0019 0020 public protocol LayoutRegion
SwiftAutoLayout.swift:24 extension LayoutGuide: LayoutRegion {}: AnyObject {} 0021 extension View: LayoutRegion {} 0022 0023 @available(iOS 9.0, OSX 10.11, *) 0024 extension LayoutGuide: LayoutRegion {} 0025 0026 public struct XAxis
SwiftAutoLayout.swift:21 extension View: LayoutRegion {}SwiftAutoLayout.swift:24 extension LayoutGuide: LayoutRegion {}SwiftAutoLayout.swift:97 public extension LayoutRegion {{} 0027 public struct YAxis
SwiftAutoLayout.swift:98 public var left: LayoutItem<XAxis> { return layoutItem(self, .Left) }SwiftAutoLayout.swift:99 public var right: LayoutItem<XAxis> { return layoutItem(self, .Right) }SwiftAutoLayout.swift:102 public var leading: LayoutItem<XAxis> { return layoutItem(self, .Leading) }SwiftAutoLayout.swift:103 public var trailing: LayoutItem<XAxis> { return layoutItem(self, .Trailing) }SwiftAutoLayout.swift:106 public var centerX: LayoutItem<XAxis> { return layoutItem(self, .CenterX) }{} 0028 public struct Dimension
SwiftAutoLayout.swift:100 public var top: LayoutItem<YAxis> { return layoutItem(self, .Top) }SwiftAutoLayout.swift:101 public var bottom: LayoutItem<YAxis> { return layoutItem(self, .Bottom) }SwiftAutoLayout.swift:107 public var centerY: LayoutItem<YAxis> { return layoutItem(self, .CenterY) }SwiftAutoLayout.swift:111 public var baseline: LayoutItem<YAxis> { return layoutItem(self, .Baseline) }SwiftAutoLayout.swift:114 public var firstBaseline: LayoutItem<YAxis> { return layoutItem(self, .FirstBaseline) }SwiftAutoLayout.swift:115 public var lastBaseline: LayoutItem<YAxis> { return layoutItem(self, .LastBaseline) }{} 0029 0030 public struct LayoutItem
SwiftAutoLayout.swift:73 public func ==(lhs: LayoutItem<Dimension>, rhs: CGFloat) -> NSLayoutConstraint {SwiftAutoLayout.swift:81 public func >=(lhs: LayoutItem<Dimension>, rhs: CGFloat) -> NSLayoutConstraint {SwiftAutoLayout.swift:89 public func <=(lhs: LayoutItem<Dimension>, rhs: CGFloat) -> NSLayoutConstraint {SwiftAutoLayout.swift:104 public var width: LayoutItem<Dimension> { return layoutItem(self, .Width) }SwiftAutoLayout.swift:105 public var height: LayoutItem<Dimension> { return layoutItem(self, .Height) }<C> { 0031 public let item
SwiftAutoLayout.swift:36 private func constrain(secondItem: LayoutItem, relation: NSLayoutRelation) -> NSLayoutConstraint {SwiftAutoLayout.swift:44 private func itemWithMultiplier(multiplier: CGFloat) -> LayoutItem {SwiftAutoLayout.swift:45 return LayoutItem(item: self.item, attribute: self.attribute, multiplier: multiplier, constant: self.constant)SwiftAutoLayout.swift:48 private func itemWithConstant(constant: CGFloat) -> LayoutItem {SwiftAutoLayout.swift:49 return LayoutItem(item: self.item, attribute: self.attribute, multiplier: self.multiplier, constant: constant)SwiftAutoLayout.swift:53 public func *<C>(lhs: LayoutItem<C>, rhs: CGFloat) -> LayoutItem<C> {SwiftAutoLayout.swift:53 public func *<C>(lhs: LayoutItem<C>, rhs: CGFloat) -> LayoutItem<C> {SwiftAutoLayout.swift:57 public func /<C>(lhs: LayoutItem<C>, rhs: CGFloat) -> LayoutItem<C> {SwiftAutoLayout.swift:57 public func /<C>(lhs: LayoutItem<C>, rhs: CGFloat) -> LayoutItem<C> {SwiftAutoLayout.swift:61 public func +<C>(lhs: LayoutItem<C>, rhs: CGFloat) -> LayoutItem<C> {SwiftAutoLayout.swift:61 public func +<C>(lhs: LayoutItem<C>, rhs: CGFloat) -> LayoutItem<C> {SwiftAutoLayout.swift:65 public func -<C>(lhs: LayoutItem<C>, rhs: CGFloat) -> LayoutItem<C> {SwiftAutoLayout.swift:65 public func -<C>(lhs: LayoutItem<C>, rhs: CGFloat) -> LayoutItem<C> {SwiftAutoLayout.swift:69 public func ==<C>(lhs: LayoutItem<C>, rhs: LayoutItem<C>) -> NSLayoutConstraint {SwiftAutoLayout.swift:69 public func ==<C>(lhs: LayoutItem<C>, rhs: LayoutItem<C>) -> NSLayoutConstraint {SwiftAutoLayout.swift:73 public func ==(lhs: LayoutItem<Dimension>, rhs: CGFloat) -> NSLayoutConstraint {SwiftAutoLayout.swift:77 public func >=<C>(lhs: LayoutItem<C>, rhs: LayoutItem<C>) -> NSLayoutConstraint {SwiftAutoLayout.swift:77 public func >=<C>(lhs: LayoutItem<C>, rhs: LayoutItem<C>) -> NSLayoutConstraint {SwiftAutoLayout.swift:81 public func >=(lhs: LayoutItem<Dimension>, rhs: CGFloat) -> NSLayoutConstraint {SwiftAutoLayout.swift:85 public func <=<C>(lhs: LayoutItem<C>, rhs: LayoutItem<C>) -> NSLayoutConstraint {SwiftAutoLayout.swift:85 public func <=<C>(lhs: LayoutItem<C>, rhs: LayoutItem<C>) -> NSLayoutConstraint {SwiftAutoLayout.swift:89 public func <=(lhs: LayoutItem<Dimension>, rhs: CGFloat) -> NSLayoutConstraint {SwiftAutoLayout.swift:93 private func layoutItem<C>(item: AnyObject, _ attribute: NSLayoutAttribute) -> LayoutItem<C> {SwiftAutoLayout.swift:94 return LayoutItem(item: item, attribute: attribute, multiplier: 1.0, constant: 0.0)SwiftAutoLayout.swift:98 public var left: LayoutItem<XAxis> { return layoutItem(self, .Left) }SwiftAutoLayout.swift:99 public var right: LayoutItem<XAxis> { return layoutItem(self, .Right) }SwiftAutoLayout.swift:100 public var top: LayoutItem<YAxis> { return layoutItem(self, .Top) }SwiftAutoLayout.swift:101 public var bottom: LayoutItem<YAxis> { return layoutItem(self, .Bottom) }SwiftAutoLayout.swift:102 public var leading: LayoutItem<XAxis> { return layoutItem(self, .Leading) }SwiftAutoLayout.swift:103 public var trailing: LayoutItem<XAxis> { return layoutItem(self, .Trailing) }SwiftAutoLayout.swift:104 public var width: LayoutItem<Dimension> { return layoutItem(self, .Width) }SwiftAutoLayout.swift:105 public var height: LayoutItem<Dimension> { return layoutItem(self, .Height) }SwiftAutoLayout.swift:106 public var centerX: LayoutItem<XAxis> { return layoutItem(self, .CenterX) }SwiftAutoLayout.swift:107 public var centerY: LayoutItem<YAxis> { return layoutItem(self, .CenterY) }SwiftAutoLayout.swift:111 public var baseline: LayoutItem<YAxis> { return layoutItem(self, .Baseline) }SwiftAutoLayout.swift:114 public var firstBaseline: LayoutItem<YAxis> { return layoutItem(self, .FirstBaseline) }SwiftAutoLayout.swift:115 public var lastBaseline: LayoutItem<YAxis> { return layoutItem(self, .LastBaseline) }: AnyObject 0032 public let attribute
SwiftAutoLayout.swift:37 return NSLayoutConstraint(item: item, attribute: attribute, relatedBy: relation, toItem: secondItem.item, attribute: secondItem.attribute, multiplier: secondItem.multiplier, constant: secondItem.constant)SwiftAutoLayout.swift:37 return NSLayoutConstraint(item: item, attribute: attribute, relatedBy: relation, toItem: secondItem.item, attribute: secondItem.attribute, multiplier: secondItem.multiplier, constant: secondItem.constant)SwiftAutoLayout.swift:41 return NSLayoutConstraint(item: item, attribute: attribute, relatedBy: relation, toItem: nil, attribute: .NotAnAttribute, multiplier: 1.0, constant: constant)SwiftAutoLayout.swift:45 return LayoutItem(item: self.item, attribute: self.attribute, multiplier: multiplier, constant: self.constant)SwiftAutoLayout.swift:49 return LayoutItem(item: self.item, attribute: self.attribute, multiplier: self.multiplier, constant: constant): NSLayoutAttribute 0033 public let multiplier
SwiftAutoLayout.swift:37 return NSLayoutConstraint(item: item, attribute: attribute, relatedBy: relation, toItem: secondItem.item, attribute: secondItem.attribute, multiplier: secondItem.multiplier, constant: secondItem.constant)SwiftAutoLayout.swift:37 return NSLayoutConstraint(item: item, attribute: attribute, relatedBy: relation, toItem: secondItem.item, attribute: secondItem.attribute, multiplier: secondItem.multiplier, constant: secondItem.constant)SwiftAutoLayout.swift:41 return NSLayoutConstraint(item: item, attribute: attribute, relatedBy: relation, toItem: nil, attribute: .NotAnAttribute, multiplier: 1.0, constant: constant)SwiftAutoLayout.swift:45 return LayoutItem(item: self.item, attribute: self.attribute, multiplier: multiplier, constant: self.constant)SwiftAutoLayout.swift:49 return LayoutItem(item: self.item, attribute: self.attribute, multiplier: self.multiplier, constant: constant): CGFloat 0034 public let constant
SwiftAutoLayout.swift:37 return NSLayoutConstraint(item: item, attribute: attribute, relatedBy: relation, toItem: secondItem.item, attribute: secondItem.attribute, multiplier: secondItem.multiplier, constant: secondItem.constant)SwiftAutoLayout.swift:49 return LayoutItem(item: self.item, attribute: self.attribute, multiplier: self.multiplier, constant: constant)SwiftAutoLayout.swift:54 return lhs.itemWithMultiplier(lhs.multiplier * rhs)SwiftAutoLayout.swift:58 return lhs.itemWithMultiplier(lhs.multiplier / rhs): CGFloat 0035 0036 private func constrain
SwiftAutoLayout.swift:37 return NSLayoutConstraint(item: item, attribute: attribute, relatedBy: relation, toItem: secondItem.item, attribute: secondItem.attribute, multiplier: secondItem.multiplier, constant: secondItem.constant)SwiftAutoLayout.swift:45 return LayoutItem(item: self.item, attribute: self.attribute, multiplier: multiplier, constant: self.constant)SwiftAutoLayout.swift:62 return lhs.itemWithConstant(lhs.constant + rhs)SwiftAutoLayout.swift:66 return lhs.itemWithConstant(lhs.constant - rhs)(secondItem: LayoutItem, relation: NSLayoutRelation) -> NSLayoutConstraint { 0037 return NSLayoutConstraint(item: item, attribute: attribute, relatedBy: relation, toItem: secondItem.item, attribute: secondItem.attribute, multiplier: secondItem.multiplier, constant: secondItem.constant) 0038 } 0039 0040 private func constrain
SwiftAutoLayout.swift:70 return lhs.constrain(rhs, relation: .Equal)SwiftAutoLayout.swift:78 return lhs.constrain(rhs, relation: .GreaterThanOrEqual)SwiftAutoLayout.swift:86 return lhs.constrain(rhs, relation: .LessThanOrEqual)(constant: CGFloat, relation: NSLayoutRelation) -> NSLayoutConstraint { 0041 return NSLayoutConstraint(item: item, attribute: attribute, relatedBy: relation, toItem: nil, attribute: .NotAnAttribute, multiplier: 1.0, constant: constant) 0042 } 0043 0044 private func itemWithMultiplier
SwiftAutoLayout.swift:74 return lhs.constrain(rhs, relation: .Equal)SwiftAutoLayout.swift:82 return lhs.constrain(rhs, relation: .GreaterThanOrEqual)SwiftAutoLayout.swift:90 return lhs.constrain(rhs, relation: .LessThanOrEqual)(multiplier: CGFloat) -> LayoutItem { 0045 return LayoutItem(item: self.item, attribute: self.attribute, multiplier: multiplier, constant: self.constant) 0046 } 0047 0048 private func itemWithConstant
SwiftAutoLayout.swift:54 return lhs.itemWithMultiplier(lhs.multiplier * rhs)SwiftAutoLayout.swift:58 return lhs.itemWithMultiplier(lhs.multiplier / rhs)(constant: CGFloat) -> LayoutItem { 0049 return LayoutItem(item: self.item, attribute: self.attribute, multiplier: self.multiplier, constant: constant) 0050 } 0051 } 0052 0053 public func *<C>(lhs: LayoutItem<C>, rhs: CGFloat) -> LayoutItem<C> { 0054 return lhs.itemWithMultiplier(lhs.multiplier * rhs) 0055 } 0056 0057 public func /<C>(lhs: LayoutItem<C>, rhs: CGFloat) -> LayoutItem<C> { 0058 return lhs.itemWithMultiplier(lhs.multiplier / rhs) 0059 } 0060 0061 public func +<C>(lhs: LayoutItem<C>, rhs: CGFloat) -> LayoutItem<C> { 0062 return lhs.itemWithConstant(lhs.constant + rhs) 0063 } 0064 0065 public func -<C>(lhs: LayoutItem<C>, rhs: CGFloat) -> LayoutItem<C> { 0066 return lhs.itemWithConstant(lhs.constant - rhs) 0067 } 0068 0069 public func ==<C>(lhs: LayoutItem<C>, rhs: LayoutItem<C>) -> NSLayoutConstraint { 0070 return lhs.constrain(rhs, relation: .Equal) 0071 } 0072 0073 public func ==(lhs: LayoutItem<Dimension>, rhs: CGFloat) -> NSLayoutConstraint { 0074 return lhs.constrain(rhs, relation: .Equal) 0075 } 0076 0077 public func >=<C>(lhs: LayoutItem<C>, rhs: LayoutItem<C>) -> NSLayoutConstraint { 0078 return lhs.constrain(rhs, relation: .GreaterThanOrEqual) 0079 } 0080 0081 public func >=(lhs: LayoutItem<Dimension>, rhs: CGFloat) -> NSLayoutConstraint { 0082 return lhs.constrain(rhs, relation: .GreaterThanOrEqual) 0083 } 0084 0085 public func <=<C>(lhs: LayoutItem<C>, rhs: LayoutItem<C>) -> NSLayoutConstraint { 0086 return lhs.constrain(rhs, relation: .LessThanOrEqual) 0087 } 0088 0089 public func <=(lhs: LayoutItem<Dimension>, rhs: CGFloat) -> NSLayoutConstraint { 0090 return lhs.constrain(rhs, relation: .LessThanOrEqual) 0091 } 0092 0093 private func layoutItem
SwiftAutoLayout.swift:62 return lhs.itemWithConstant(lhs.constant + rhs)SwiftAutoLayout.swift:66 return lhs.itemWithConstant(lhs.constant - rhs)<C>(item: AnyObject, _ attribute: NSLayoutAttribute) -> LayoutItem<C> { 0094 return LayoutItem(item: item, attribute: attribute, multiplier: 1.0, constant: 0.0) 0095 } 0096 0097 public extension LayoutRegion { 0098 public var left: LayoutItem<XAxis> { return layoutItem(self, .Left) } 0099 public var right: LayoutItem<XAxis> { return layoutItem(self, .Right) } 0100 public var top: LayoutItem<YAxis> { return layoutItem(self, .Top) } 0101 public var bottom: LayoutItem<YAxis> { return layoutItem(self, .Bottom) } 0102 public var leading: LayoutItem<XAxis> { return layoutItem(self, .Leading) } 0103 public var trailing: LayoutItem<XAxis> { return layoutItem(self, .Trailing) } 0104 public var width: LayoutItem<Dimension> { return layoutItem(self, .Width) } 0105 public var height: LayoutItem<Dimension> { return layoutItem(self, .Height) } 0106 public var centerX: LayoutItem<XAxis> { return layoutItem(self, .CenterX) } 0107 public var centerY: LayoutItem<YAxis> { return layoutItem(self, .CenterY) } 0108 } 0109 0110 public extension View { 0111 public var baseline: LayoutItem<YAxis> { return layoutItem(self, .Baseline) } 0112 0113 @available(iOS 8.0, OSX 10.11, *) 0114 public var firstBaseline: LayoutItem<YAxis> { return layoutItem(self, .FirstBaseline) } 0115 public var lastBaseline: LayoutItem<YAxis> { return layoutItem(self, .LastBaseline) } 0116 } 0117 0118 #if os(iOS) || os(tvOS) 0119 public extension UIViewController { 0120 public var topLayoutGuideTop: LayoutItem<YAxis> { 0121 return layoutItem(topLayoutGuide, .Top) 0122 } 0123 0124 public var topLayoutGuideBottom: LayoutItem<YAxis> { 0125 return layoutItem(topLayoutGuide, .Bottom) 0126 } 0127 0128 public var bottomLayoutGuideTop: LayoutItem<YAxis> { 0129 return layoutItem(bottomLayoutGuide, .Top) 0130 } 0131 0132 public var bottomLayoutGuideBottom: LayoutItem<YAxis> { 0133 return layoutItem(bottomLayoutGuide, .Bottom) 0134 } 0135 } 0136 0137 public extension UIView { 0138 public var leftMargin: LayoutItem<XAxis> { return layoutItem(self, .LeftMargin) } 0139 public var rightMargin: LayoutItem<XAxis> { return layoutItem(self, .RightMargin) } 0140 public var topMargin: LayoutItem<YAxis> { return layoutItem(self, .TopMargin) } 0141 public var bottomMargin: LayoutItem<YAxis> { return layoutItem(self, .BottomMargin) } 0142 public var leadingMargin: LayoutItem<XAxis> { return layoutItem(self, .LeadingMargin) } 0143 public var trailingMargin: LayoutItem<XAxis> { return layoutItem(self, .TrailingMargin) } 0144 public var centerXWithinMargins: LayoutItem<XAxis> { return layoutItem(self, .CenterXWithinMargins) } 0145 public var centerYWithinMargins: LayoutItem<YAxis> { return layoutItem(self, .CenterYWithinMargins) } 0146 } 0147 #endif 0148 0149 infix operator ~ { associativity left precedence 120 } 0150 0151 public func ~(lhs: NSLayoutConstraint, rhs: LayoutPriority) -> NSLayoutConstraint { 0152 let newConstraint = NSLayoutConstraint(item: lhs.firstItem, attribute: lhs.firstAttribute, relatedBy: lhs.relation, toItem: lhs.secondItem, attribute: lhs.secondAttribute, multiplier: lhs.multiplier, constant: lhs.constant) 0153 newConstraint.priority = rhs 0154 return newConstraint 0155 } 0156
SwiftAutoLayout.swift:98 public var left: LayoutItem<XAxis> { return layoutItem(self, .Left) }SwiftAutoLayout.swift:99 public var right: LayoutItem<XAxis> { return layoutItem(self, .Right) }SwiftAutoLayout.swift:100 public var top: LayoutItem<YAxis> { return layoutItem(self, .Top) }SwiftAutoLayout.swift:101 public var bottom: LayoutItem<YAxis> { return layoutItem(self, .Bottom) }SwiftAutoLayout.swift:102 public var leading: LayoutItem<XAxis> { return layoutItem(self, .Leading) }SwiftAutoLayout.swift:103 public var trailing: LayoutItem<XAxis> { return layoutItem(self, .Trailing) }SwiftAutoLayout.swift:104 public var width: LayoutItem<Dimension> { return layoutItem(self, .Width) }SwiftAutoLayout.swift:105 public var height: LayoutItem<Dimension> { return layoutItem(self, .Height) }SwiftAutoLayout.swift:106 public var centerX: LayoutItem<XAxis> { return layoutItem(self, .CenterX) }SwiftAutoLayout.swift:107 public var centerY: LayoutItem<YAxis> { return layoutItem(self, .CenterY) }SwiftAutoLayout.swift:111 public var baseline: LayoutItem<YAxis> { return layoutItem(self, .Baseline) }SwiftAutoLayout.swift:114 public var firstBaseline: LayoutItem<YAxis> { return layoutItem(self, .FirstBaseline) }SwiftAutoLayout.swift:115 public var lastBaseline: LayoutItem<YAxis> { return layoutItem(self, .LastBaseline) }