Files
OrderScheduling/Pods/SwiftEntryKit/Source/Extensions/QuickLayout/QLUtils.swift
DDIsFriend f0e8a1709d initial
2023-08-18 17:28:57 +08:00

108 lines
2.2 KiB
Swift

//
// QLUtils.swift
// QuickLayout
//
// Created by Daniel Huri on 11/21/17.
//
import Foundation
import UIKit
/**
Typealias for dictionary that contains multiple constraints
*/
public typealias QLMultipleConstraints = [QLAttribute: NSLayoutConstraint]
/**
Extends layout priority to other readable types
*/
public extension QLPriority {
static let must = QLPriority(rawValue: 999)
static let zero = QLPriority(rawValue: 0)
}
/**
Represents pair of attributes
*/
public struct QLAttributePair {
public let first: QLAttribute
public let second: QLAttribute
}
/**
Represents size constraints
*/
public struct QLSizeConstraints {
public let width: NSLayoutConstraint
public let height: NSLayoutConstraint
}
/**
Represents center constraints
*/
public struct QLCenterConstraints {
public let x: NSLayoutConstraint
public let y: NSLayoutConstraint
}
/**
Represents axis constraints (might be .top and .bottom, .left and .right, .leading and .trailing)
*/
public struct QLAxisConstraints {
public let first: NSLayoutConstraint
public let second: NSLayoutConstraint
}
/**
Represents center and size constraints
*/
public struct QLFillConstraints {
public let center: QLCenterConstraints
public let size: QLSizeConstraints
}
/**
Represents pair of priorities
*/
public struct QLPriorityPair {
public let horizontal: QLPriority
public let vertical: QLPriority
public static var required: QLPriorityPair {
return QLPriorityPair(.required, .required)
}
public static var must: QLPriorityPair {
return QLPriorityPair(.must, .must)
}
public init(_ horizontal: QLPriority, _ vertical: QLPriority) {
self.horizontal = horizontal
self.vertical = vertical
}
}
/**
Represents axis description
*/
public enum QLAxis {
case horizontally
case vertically
public var attributes: QLAttributePair {
let first: QLAttribute
let second: QLAttribute
switch self {
case .horizontally:
first = .left
second = .right
case .vertically:
first = .top
second = .bottom
}
return QLAttributePair(first: first, second: second)
}
}