// // NSConstraintLayoutSet.swift // InputBarAccessoryView // // Copyright © 2017-2019 Nathan Tannar. // // Permission is hereby granted, free of charge, to any person obtaining a copy // of this software and associated documentation files (the "Software"), to deal // in the Software without restriction, including without limitation the rights // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell // copies of the Software, and to permit persons to whom the Software is // furnished to do so, subject to the following conditions: // // The above copyright notice and this permission notice shall be included in all // copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE // SOFTWARE. // // Created by Nathan Tannar on 8/25/17. // import Foundation import UIKit class NSLayoutConstraintSet { var top: NSLayoutConstraint? var bottom: NSLayoutConstraint? var left: NSLayoutConstraint? var right: NSLayoutConstraint? var centerX: NSLayoutConstraint? var centerY: NSLayoutConstraint? var width: NSLayoutConstraint? var height: NSLayoutConstraint? public init(top: NSLayoutConstraint? = nil, bottom: NSLayoutConstraint? = nil, left: NSLayoutConstraint? = nil, right: NSLayoutConstraint? = nil, centerX: NSLayoutConstraint? = nil, centerY: NSLayoutConstraint? = nil, width: NSLayoutConstraint? = nil, height: NSLayoutConstraint? = nil) { self.top = top self.bottom = bottom self.left = left self.right = right self.centerX = centerX self.centerY = centerY self.width = width self.height = height } /// All of the currently configured constraints private var availableConstraints: [NSLayoutConstraint] { #if swift(>=4.1) return [top, bottom, left, right, centerX, centerY, width, height].compactMap {$0} #else return [top, bottom, left, right, centerX, centerY, width, height].flatMap {$0} #endif } /// Activates all of the non-nil constraints /// /// - Returns: Self @discardableResult func activate() -> Self { NSLayoutConstraint.activate(availableConstraints) return self } /// Deactivates all of the non-nil constraints /// /// - Returns: Self @discardableResult func deactivate() -> Self { NSLayoutConstraint.deactivate(availableConstraints) return self } }