mirror of
https://github.com/mastodon/mastodon-ios.git
synced 2024-12-15 10:24:32 +01:00
69 lines
2.0 KiB
Swift
69 lines
2.0 KiB
Swift
//
|
|
// UIView.swift
|
|
//
|
|
//
|
|
// Created by MainasuK on 2022-1-17.
|
|
//
|
|
|
|
import UIKit
|
|
|
|
extension UIView {
|
|
public static var isZoomedMode: Bool {
|
|
return UIScreen.main.scale != UIScreen.main.nativeScale
|
|
}
|
|
}
|
|
|
|
extension UIView {
|
|
@discardableResult
|
|
public func applyCornerRadius(radius: CGFloat) -> Self {
|
|
layer.masksToBounds = true
|
|
layer.cornerRadius = radius
|
|
layer.cornerCurve = .continuous
|
|
return self
|
|
}
|
|
|
|
@discardableResult
|
|
public func applyShadow(
|
|
color: UIColor,
|
|
alpha: Float,
|
|
x: CGFloat,
|
|
y: CGFloat,
|
|
blur: CGFloat,
|
|
spread: CGFloat = 0
|
|
) -> Self {
|
|
layer.masksToBounds = false
|
|
layer.shadowColor = color.cgColor
|
|
layer.shadowOpacity = alpha
|
|
layer.shadowOffset = CGSize(width: x, height: y)
|
|
layer.shadowRadius = blur / 2.0
|
|
if spread == 0 {
|
|
layer.shadowPath = nil
|
|
} else {
|
|
let dx = -spread
|
|
let rect = bounds.insetBy(dx: dx, dy: dx)
|
|
layer.shadowPath = UIBezierPath(rect: rect).cgPath
|
|
}
|
|
return self
|
|
}
|
|
}
|
|
|
|
public extension UIView {
|
|
@discardableResult
|
|
func pinToParent(padding: UIEdgeInsets = .zero) -> [NSLayoutConstraint] {
|
|
pinTo(to: self.superview, padding: padding)
|
|
}
|
|
|
|
@discardableResult
|
|
func pinTo(to view: UIView?, padding: UIEdgeInsets = .zero) -> [NSLayoutConstraint] {
|
|
guard let pinToView = view else { return [] }
|
|
let constraints = [
|
|
topAnchor.constraint(equalTo: pinToView.topAnchor, constant: padding.top),
|
|
leadingAnchor.constraint(equalTo: pinToView.leadingAnchor, constant: padding.left),
|
|
trailingAnchor.constraint(equalTo: pinToView.trailingAnchor, constant: -padding.right),
|
|
bottomAnchor.constraint(equalTo: pinToView.bottomAnchor, constant: -padding.bottom),
|
|
]
|
|
NSLayoutConstraint.activate(constraints)
|
|
return constraints
|
|
}
|
|
}
|