如何按设备设置安全区大小?
How do I set the safe zone size by device?
我想通过设备设置安全区域。我的网络视图设置为 SafeArea above
、SuperView below
。 iPhone X
系列之后,由于notch
区,Y
的值是44
。但是对于 iPhone 6
和 iPhone 8
,44
太宽了。如何调整?
当前WKWebView的区域
从当前 Swift5 加载 WebView 区域
@IBOutlet var WKWebView: FullScreenWKWebView!
...
let config = WKWebViewConfiguration()
contentController.add(self, name: "goApp")
config.userContentController = contentController
WKWebView = FullScreenWKWebView(frame: WKWebView.frame, configuration: config)
WKWebView.uiDelegate = self
WKWebView.navigationDelegate = self
WKWebView.scrollView.delegate = self
view.addSubview(WKWebView)
view.addSubview(indicator)
...
class FullScreenWKWebView: WKWebView {
override var safeAreaInsets: UIEdgeInsets {
return UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
}
}
我想按设备设置Top SafeArea区域。
我正在尝试,但没有成功。
我已经设置了限制,但是右边和下面的屏幕被切掉了,而且顶部对于 iPhone 6 来说还是太宽了。
iPhone 6
的顶部
将约束锚定到安全区域并为其赋予所需的值。它会自动适应所有设备。
在这里你可以看到一个蓝色背景的 UIView,顶部和底部锚定到安全区域,值为 0(如果你想离安全区域更远,可以增加该值)。
视图将自动绘制,并给出与安全区域的适当距离(iPhone X 或以上为 44,iPhone 8 及以下为 0)。
我无法无条件地将WKWebView
的顶部区域设置为安全区。因为安全区包括了NavigationController
Bar Area。但是我不使用NavigationController
。因此,无法将安全区设置为约束。
所以我通过按设备大小分隔解决了这个问题。
设置主故事板
根据设备高度调整WKWebVIew的高度和Y值
let screenHeight = UIScreen.main.bounds.size.height
if screenHeight > 667 {
WKWebView = FullScreenWKWebView(frame: CGRect( x: 0, y: 44, width: WKWebView.frame.width, height: WKWebView.frame.height - 44 ), configuration: config)
} else {
WKWebView = FullScreenWKWebView(frame: CGRect( x: 0, y: 20, width: WKWebView.frame.width, height: WKWebView.frame.height - 20 ), configuration: config)
}
iPhone 6
iPhone X 及之后
我想通过设备设置安全区域。我的网络视图设置为 SafeArea above
、SuperView below
。 iPhone X
系列之后,由于notch
区,Y
的值是44
。但是对于 iPhone 6
和 iPhone 8
,44
太宽了。如何调整?
当前WKWebView的区域
从当前 Swift5 加载 WebView 区域
@IBOutlet var WKWebView: FullScreenWKWebView!
...
let config = WKWebViewConfiguration()
contentController.add(self, name: "goApp")
config.userContentController = contentController
WKWebView = FullScreenWKWebView(frame: WKWebView.frame, configuration: config)
WKWebView.uiDelegate = self
WKWebView.navigationDelegate = self
WKWebView.scrollView.delegate = self
view.addSubview(WKWebView)
view.addSubview(indicator)
...
class FullScreenWKWebView: WKWebView {
override var safeAreaInsets: UIEdgeInsets {
return UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
}
}
我想按设备设置Top SafeArea区域。
我正在尝试,但没有成功。
我已经设置了限制,但是右边和下面的屏幕被切掉了,而且顶部对于 iPhone 6 来说还是太宽了。
iPhone 6
的顶部将约束锚定到安全区域并为其赋予所需的值。它会自动适应所有设备。
在这里你可以看到一个蓝色背景的 UIView,顶部和底部锚定到安全区域,值为 0(如果你想离安全区域更远,可以增加该值)。
视图将自动绘制,并给出与安全区域的适当距离(iPhone X 或以上为 44,iPhone 8 及以下为 0)。
我无法无条件地将WKWebView
的顶部区域设置为安全区。因为安全区包括了NavigationController
Bar Area。但是我不使用NavigationController
。因此,无法将安全区设置为约束。
所以我通过按设备大小分隔解决了这个问题。
设置主故事板
根据设备高度调整WKWebVIew的高度和Y值
let screenHeight = UIScreen.main.bounds.size.height
if screenHeight > 667 {
WKWebView = FullScreenWKWebView(frame: CGRect( x: 0, y: 44, width: WKWebView.frame.width, height: WKWebView.frame.height - 44 ), configuration: config)
} else {
WKWebView = FullScreenWKWebView(frame: CGRect( x: 0, y: 20, width: WKWebView.frame.width, height: WKWebView.frame.height - 20 ), configuration: config)
}