好吧,首先 - 也許最重要的是,爲什麼要任何 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