From 4014fb41f18832bdea1e9d6e314a14919309dda4 Mon Sep 17 00:00:00 2001 From: Jed Fox Date: Sat, 26 Nov 2022 09:36:57 -0500 Subject: [PATCH] Allow pinning to a view with padding --- .../Sources/MastodonExtension/UIEdgeInsets.swift | 14 ++++++++++++++ .../Sources/MastodonExtension/UIView.swift | 15 +++++++-------- 2 files changed, 21 insertions(+), 8 deletions(-) create mode 100644 MastodonSDK/Sources/MastodonExtension/UIEdgeInsets.swift diff --git a/MastodonSDK/Sources/MastodonExtension/UIEdgeInsets.swift b/MastodonSDK/Sources/MastodonExtension/UIEdgeInsets.swift new file mode 100644 index 000000000..8436ff5d2 --- /dev/null +++ b/MastodonSDK/Sources/MastodonExtension/UIEdgeInsets.swift @@ -0,0 +1,14 @@ +// +// UIEdgeInsets.swift +// +// +// Created by Jed Fox on 2022-11-24. +// + +import UIKit + +extension UIEdgeInsets { + public static func constant(_ offset: CGFloat) -> Self { + UIEdgeInsets(top: offset, left: offset, bottom: offset, right: offset) + } +} diff --git a/MastodonSDK/Sources/MastodonExtension/UIView.swift b/MastodonSDK/Sources/MastodonExtension/UIView.swift index bfa253680..84f87eb20 100644 --- a/MastodonSDK/Sources/MastodonExtension/UIView.swift +++ b/MastodonSDK/Sources/MastodonExtension/UIView.swift @@ -48,20 +48,19 @@ extension UIView { } public extension UIView { - @discardableResult - func pinToParent() -> [NSLayoutConstraint] { - pinTo(to: self.superview) + func pinToParent(padding: UIEdgeInsets = .zero) -> [NSLayoutConstraint] { + pinTo(to: self.superview, padding: padding) } @discardableResult - func pinTo(to view: UIView?) -> [NSLayoutConstraint] { + func pinTo(to view: UIView?, padding: UIEdgeInsets = .zero) -> [NSLayoutConstraint] { guard let pinToView = view else { return [] } let constraints = [ - topAnchor.constraint(equalTo: pinToView.topAnchor), - leadingAnchor.constraint(equalTo: pinToView.leadingAnchor), - trailingAnchor.constraint(equalTo: pinToView.trailingAnchor), - bottomAnchor.constraint(equalTo: pinToView.bottomAnchor), + 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