top layout
func zf_addTopLayout(ofVC: UIViewController, constant: CGFloat) -> NSLayoutConstraint {
self.translatesAutoresizingMaskIntoConstraints = false
if #available(iOS 11.0, *) {
let guide = ofVC.view.safeAreaLayoutGuide
let layout = self.topAnchor.constraintEqualToSystemSpacingBelow(guide.topAnchor, multiplier: 1)
layout.isActive = true
layout.constant = constant
return layout
} else {
let layout = NSLayoutConstraint(item: self, attribute: .top, relatedBy: .equal, toItem: ofVC.topLayoutGuide, attribute: .bottom, multiplier: 1, constant: constant)
ofVC.view.addConstraint(layout)
return layout
}
}
bottom layout
func zf_addBottomLayout(ofVC: UIViewController, constant: CGFloat) -> NSLayoutConstraint {
self.translatesAutoresizingMaskIntoConstraints = false
if #available(iOS 11.0, *) {
let guide = ofVC.view.safeAreaLayoutGuide
let layout = self.bottomAnchor.constraintEqualToSystemSpacingBelow(guide.bottomAnchor, multiplier: 1)
layout.isActive = true
layout.constant = -constant
return layout
} else {
let layout = NSLayoutConstraint(item: self, attribute: .bottom, relatedBy: .equal, toItem: ofVC.bottomLayoutGuide, attribute: .top, multiplier: 1, constant: -constant)
ofVC.view.addConstraint(layout)
return layout
}
}