好吧,首先 - 也许最重要的是,为什么要任何 iPhone X除了iOS 11还在运行吗? (提示:需要降级)
话虽如此,诀窍是(a)检查正在运行的iOS版本,然后(b)了解在iOS 11中引入了哪些其他--即安全区域。
因为我需要知道这个安全区的更确切尺寸我增加了一个无形的,最低级的视图。我想你可以把我的代码,看看如何将它应用到你的需求:
let safeAreaView = UIView()
....
safeAreaView.backgroundColor = UIColor.clear
safeAreaView.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(safeAreaView)
....
view.sendSubview(toBack: safeAreaView)
而且布局:
let margins = view.layoutMarginsGuide
view.addLayoutGuide(margins)
if #available(iOS 11, *) {
let guide = view.safeAreaLayoutGuide
safeAreaView.topAnchor.constraintEqualToSystemSpacingBelow(guide.topAnchor, multiplier: 1.0).isActive = true
safeAreaView.bottomAnchor.constraintEqualToSystemSpacingBelow(guide.bottomAnchor, multiplier: 1.0).isActive = true
} else {
safeAreaView.topAnchor.constraint(equalTo: topLayoutGuide.bottomAnchor).isActive = true
safeAreaView.bottomAnchor.constraint(equalTo: bottomLayoutGuide.topAnchor).isActive = true
}
safeAreaView.leadingAnchor.constraint(equalTo: view.leadingAnchor).isActive = true
safeAreaView.trailingAnchor.constraint(equalTo: view.trailingAnchor).isActive = true
最终结果?你有一个观点,你可以基于剩余的布局。是的,它在“安全”区域提供不是的点。更改backgroundColor
以了解我的意思。
我确定有更好的方法可以确定(a)这个safeView
的实际高度或(b)说明一些事情。但这应该适用于iOS 11,iOS 10,iPhone X,iPhone SE。
更多的,它适用于AutoLayout。
来源
2017-12-18 05:07:11
dfd
使用应该使用安全区域布局指南进行自动布局。 – MBN
检查此https://stackoverflow.com/questions/46344381/ios-11-layout-guidance-about-safe-area-for-iphone-x – karthikeyan
你有故事板或代码中的布局? – GoodSp33d