Merge pull request #121 from TouchInstinct/feature/pinView11

Safe area support added
This commit is contained in:
Alexey Gerasimov 2018-03-29 20:02:07 +03:00 committed by GitHub
commit ee15a4f1a6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 58 additions and 8 deletions

View File

@ -41,10 +41,46 @@ public extension UIView {
return
}
centerXAnchor.constraint(equalTo: parent.centerXAnchor).isActive = true
centerYAnchor.constraint(equalTo: parent.centerYAnchor).isActive = true
heightAnchor.constraint(equalToConstant: size.height).isActive = true
widthAnchor.constraint(equalToConstant: size.width).isActive = true
let constraints = [
centerXAnchor.constraint(equalTo: parent.centerXAnchor),
centerYAnchor.constraint(equalTo: parent.centerYAnchor),
heightAnchor.constraint(equalToConstant: size.height),
widthAnchor.constraint(equalToConstant: size.width)
]
NSLayoutConstraint.activate(constraints)
}
/**
Place and fix view to parent view's center with insets
- parameter insets: desired view insets, by default is zero
*/
func setToCenter(wtihInsets insets: UIEdgeInsets = .zero) {
guard let superview = superview else {
return
}
translatesAutoresizingMaskIntoConstraints = false
let constraints: [NSLayoutConstraint]
if #available(iOS 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)
]
} 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)
]
}
NSLayoutConstraint.activate(constraints)
}
private func scaleToFill() {
@ -52,10 +88,24 @@ public extension UIView {
return
}
topAnchor.constraint(equalTo: superview.topAnchor).isActive = true
bottomAnchor.constraint(equalTo: superview.bottomAnchor).isActive = true
leftAnchor.constraint(equalTo: superview.leftAnchor).isActive = true
rightAnchor.constraint(equalTo: superview.rightAnchor).isActive = true
let constraints: [NSLayoutConstraint]
if #available(iOS 11, *) {
constraints = [
topAnchor.constraint(equalTo: superview.safeAreaLayoutGuide.topAnchor),
bottomAnchor.constraint(equalTo: superview.safeAreaLayoutGuide.bottomAnchor),
leftAnchor.constraint(equalTo: superview.safeAreaLayoutGuide.leftAnchor),
rightAnchor.constraint(equalTo: superview.safeAreaLayoutGuide.rightAnchor)
]
} else {
constraints = [
topAnchor.constraint(equalTo: superview.topAnchor),
bottomAnchor.constraint(equalTo: superview.bottomAnchor),
leftAnchor.constraint(equalTo: superview.leftAnchor),
rightAnchor.constraint(equalTo: superview.rightAnchor)
]
}
NSLayoutConstraint.activate(constraints)
}
}