From d15a10857f7cd507c8fd1bdafbb0be6acffc6bd9 Mon Sep 17 00:00:00 2001 From: Madhas Date: Wed, 11 Apr 2018 16:39:03 +0300 Subject: [PATCH] setToCenter with insets updated --- .../UIKit/UIView/UIView+Layout.swift | 30 +++++++++---------- 1 file changed, 14 insertions(+), 16 deletions(-) diff --git a/Sources/Extensions/UIKit/UIView/UIView+Layout.swift b/Sources/Extensions/UIKit/UIView/UIView+Layout.swift index 359487e8..dee88194 100644 --- a/Sources/Extensions/UIKit/UIView/UIView+Layout.swift +++ b/Sources/Extensions/UIKit/UIView/UIView+Layout.swift @@ -56,31 +56,29 @@ public extension UIView { - parameter insets: desired view insets, by default is zero */ - func setToCenter(wtihInsets insets: UIEdgeInsets = .zero) { + func pinToSuperview(wtihInsets insets: UIEdgeInsets = .zero, excluding edges: UIRectEdge = []) { guard let superview = superview else { return } + let topActive = !edges.contains(.top) + let leadingActive = !edges.contains(.left) + let bottomActive = !edges.contains(.bottom) + let trailingActive = !edges.contains(.right) + translatesAutoresizingMaskIntoConstraints = false - let constraints: [NSLayoutConstraint] if #available(iOS 11, tvOS 11, *) { - constraints = [ - topAnchor.constraint(equalTo: superview.safeAreaLayoutGuide.topAnchor, constant: insets.top), - leadingAnchor.constraint(equalTo: superview.safeAreaLayoutGuide.leadingAnchor, constant: insets.left), - bottomAnchor.constraint(equalTo: superview.safeAreaLayoutGuide.bottomAnchor, constant: -insets.bottom), - trailingAnchor.constraint(equalTo: superview.safeAreaLayoutGuide.trailingAnchor, constant: -insets.right) - ] + topAnchor.constraint(equalTo: superview.safeAreaLayoutGuide.topAnchor, constant: insets.top).isActive = topActive + leadingAnchor.constraint(equalTo: superview.safeAreaLayoutGuide.leadingAnchor, constant: insets.left).isActive = leadingActive + bottomAnchor.constraint(equalTo: superview.safeAreaLayoutGuide.bottomAnchor, constant: -insets.bottom).isActive = bottomActive + trailingAnchor.constraint(equalTo: superview.safeAreaLayoutGuide.trailingAnchor, constant: -insets.right).isActive = trailingActive } else { - constraints = [ - topAnchor.constraint(equalTo: superview.topAnchor, constant: insets.top), - leadingAnchor.constraint(equalTo: superview.leadingAnchor, constant: insets.left), - bottomAnchor.constraint(equalTo: superview.bottomAnchor, constant: -insets.bottom), - trailingAnchor.constraint(equalTo: superview.trailingAnchor, constant: -insets.right) - ] + topAnchor.constraint(equalTo: superview.topAnchor, constant: insets.top).isActive = topActive + leadingAnchor.constraint(equalTo: superview.leadingAnchor, constant: insets.left).isActive = leadingActive + bottomAnchor.constraint(equalTo: superview.bottomAnchor, constant: -insets.bottom).isActive = bottomActive + trailingAnchor.constraint(equalTo: superview.trailingAnchor, constant: -insets.right).isActive = trailingActive } - - NSLayoutConstraint.activate(constraints) } private func scaleToFill() {