132 lines
4.1 KiB
Swift
132 lines
4.1 KiB
Swift
//
|
|
// UIView.swift
|
|
// VDS
|
|
//
|
|
// Created by Matt Bruce on 11/17/22.
|
|
//
|
|
|
|
import Foundation
|
|
import UIKit
|
|
|
|
extension UIView {
|
|
public func pin(_ view: UIView, with edges: UIEdgeInsets = UIEdgeInsets.zero) {
|
|
leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: edges.left).isActive = true
|
|
trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -edges.right).isActive = true
|
|
topAnchor.constraint(equalTo: view.topAnchor, constant: edges.top).isActive = true
|
|
bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: -edges.bottom).isActive = true
|
|
}
|
|
|
|
public func pinToSuperView(_ edges: UIEdgeInsets = UIEdgeInsets.zero) {
|
|
if let superview {
|
|
pin(superview, with: edges)
|
|
}
|
|
}
|
|
|
|
@discardableResult
|
|
public func height(_ constant: CGFloat) -> Self {
|
|
heightAnchor.constraint(equalToConstant: constant).isActive = true
|
|
return self
|
|
}
|
|
|
|
@discardableResult
|
|
public func heightGreaterThanEqual(_ constant: CGFloat) -> Self {
|
|
heightAnchor.constraint(greaterThanOrEqualToConstant: constant).isActive = true
|
|
return self
|
|
}
|
|
|
|
@discardableResult
|
|
public func heightLessThanEqual(_ constant: CGFloat) -> Self {
|
|
heightAnchor.constraint(lessThanOrEqualToConstant: constant).isActive = true
|
|
return self
|
|
}
|
|
|
|
@discardableResult
|
|
public func width(_ constant: CGFloat) -> Self {
|
|
widthAnchor.constraint(equalToConstant: constant).isActive = true
|
|
return self
|
|
}
|
|
|
|
|
|
@discardableResult
|
|
public func widthGreaterThanEqual(_ constant: CGFloat) -> Self {
|
|
widthAnchor.constraint(greaterThanOrEqualToConstant: constant).isActive = true
|
|
return self
|
|
}
|
|
|
|
@discardableResult
|
|
public func widthLessThanEqual(_ constant: CGFloat) -> Self {
|
|
widthAnchor.constraint(lessThanOrEqualToConstant: constant).isActive = true
|
|
return self
|
|
}
|
|
|
|
@discardableResult
|
|
public func pinTop(_ constant: CGFloat = 0.0) -> Self {
|
|
return pinTop(nil, constant)
|
|
}
|
|
|
|
@discardableResult
|
|
public func pinTop(_ anchor: NSLayoutYAxisAnchor? = nil, _ constant: CGFloat = 0.0) -> Self {
|
|
let found: NSLayoutYAxisAnchor? = anchor ?? superview?.topAnchor
|
|
if let found {
|
|
topAnchor.constraint(equalTo: found, constant: constant).isActive = true
|
|
}
|
|
return self
|
|
}
|
|
|
|
@discardableResult
|
|
public func pinBottom(_ constant: CGFloat = 0.0) -> Self {
|
|
return pinBottom(nil, constant)
|
|
}
|
|
|
|
@discardableResult
|
|
public func pinBottom(_ anchor: NSLayoutYAxisAnchor? = nil, _ constant: CGFloat = 0.0) -> Self {
|
|
let found: NSLayoutYAxisAnchor? = anchor ?? superview?.bottomAnchor
|
|
if let found {
|
|
bottomAnchor.constraint(equalTo: found, constant: -constant).isActive = true
|
|
}
|
|
return self
|
|
}
|
|
|
|
@discardableResult
|
|
public func pinLeading(_ constant: CGFloat = 0.0) -> Self {
|
|
return pinLeading(nil, constant)
|
|
}
|
|
|
|
@discardableResult
|
|
public func pinLeading(_ anchor: NSLayoutXAxisAnchor? = nil, _ constant: CGFloat = 0.0) -> Self {
|
|
let found: NSLayoutXAxisAnchor? = anchor ?? superview?.leadingAnchor
|
|
if let found {
|
|
leadingAnchor.constraint(equalTo: found, constant: constant).isActive = true
|
|
}
|
|
return self
|
|
}
|
|
|
|
@discardableResult
|
|
public func pinTrailing(_ constant: CGFloat = 0.0) -> Self {
|
|
return pinTrailing(nil, constant)
|
|
}
|
|
|
|
@discardableResult
|
|
public func pinTrailing(_ anchor: NSLayoutXAxisAnchor? = nil, _ constant: CGFloat = 0.0) -> Self {
|
|
let found: NSLayoutXAxisAnchor? = anchor ?? superview?.trailingAnchor
|
|
if let found {
|
|
trailingAnchor.constraint(equalTo: found, constant: -constant).isActive = true
|
|
}
|
|
return self
|
|
}
|
|
|
|
}
|
|
|
|
|
|
extension UIView {
|
|
public func debugBorder(show shouldShow: Bool = true, color: UIColor = .red) {
|
|
if shouldShow {
|
|
layer.borderColor = color.cgColor
|
|
layer.borderWidth = 1
|
|
} else {
|
|
layer.borderColor = UIColor.clear.cgColor
|
|
layer.borderWidth = 0
|
|
}
|
|
}
|
|
}
|