Prior to iOS 11, use a combination of topLayoutGuide
and bottomLayoutGuide
.
For iOS 11 or later, it is integrated into the SafeAreaLayoutGuide
, so use that.
ExampleViewController.swift
private let greenView = UIView()
private func setupView() {
greenView.translatesAutoresizingMaskIntoConstraints = false
greenView.backgroundColor = .green
view.addSubview(greenView)
let margins = view.layoutMarginsGuide
NSLayoutConstraint.activate([
greenView.leadingAnchor.constraint(equalTo: margins.leadingAnchor),
greenView.trailingAnchor.constraint(equalTo: margins.trailingAnchor)
])
if #available(iOS 11, *) {
let guide = view.safeAreaLayoutGuide
NSLayoutConstraint.activate([
greenView.topAnchor.constraintEqualToSystemSpacingBelow(guide.topAnchor, multiplier: 1.0),
guide.bottomAnchor.constraintEqualToSystemSpacingBelow(greenView.bottomAnchor, multiplier: 1.0)
])
} else {
let standardSpacing: CGFloat = 8.0
NSLayoutConstraint.activate([
greenView.topAnchor.constraint(equalTo: topLayoutGuide.bottomAnchor, constant: standardSpacing),
bottomLayoutGuide.topAnchor.constraint(equalTo: greenView.bottomAnchor, constant: standardSpacing)
])
}
If you are not using AutoLayout, you can get the margin value of the safeArea part from safeAreaInsets
, and if it is less than iOS11, you can get it from topLayoutGuide.length
, bottomLayoutGuide.length
.
iPhone X compatible ~ outside Safe Area ~ Positioning Content Relative to the Safe Area USE YOUR LOAF - Safe Area Layout Guide Stack Overflow - How do I use Safe Area Layout programmatically?
Recommended Posts