【发布时间】:2022-06-12 15:14:01
【问题描述】:
我在打开键盘时调整 webview 的大小。我像这样为 webview 添加了一些调试样式
self.webViewController.view.layer.borderWidth = 5
self.webViewController.view.layer.borderColor = UIColor.green.cgColor
self.webViewController.view.backgroundColor = UIColor.blue
此处的示例:https://github.com/zecar/ios-app-clone
这是我打开键盘后得到的 调整大小似乎工作正常,我在 webview 周围有绿色边框,这很好。问题是显示的蓝色背景,它的高度似乎与键盘完全相同。
这就是我调整大小的方式
self.keyboardOpenedFrame = CGRect(x: 0, y: 0.5, width: self.view.frame.width, height: self.originalFrame.height - kbSize)
self.view.frame = self.keyboardOpenedFrame
您在顶部看到的 HTML 元素是具有固定位置和 100% 高度 100% 宽度的全屏元素,所以我猜 HTML 页面内没有添加蓝色边距。
有什么想法吗?
//编辑:添加webview结构
struct WebView: View {
typealias UIViewControllerType = UIViewController
var body: some View {
if #available(iOS 14.0, *) {
WebViewRepresentable().edgesIgnoringSafeArea(.all).ignoresSafeArea(edges: .bottom)
} else {
// Fallback on earlier versions
WebViewRepresentable().edgesIgnoringSafeArea(.all)
}
}
struct WebViewRepresentable: UIViewControllerRepresentable {
func makeUIViewController(context: UIViewControllerRepresentableContext<WebView.WebViewRepresentable>) -> UIViewController {
return WebViewController()
}
func updateUIViewController(_ uiViewController: UIViewController, context: UIViewControllerRepresentableContext<WebView.WebViewRepresentable>) {
}
}
}
【问题讨论】:
-
你使用的是 UIViewRepresentable( SwiftUI ) 还是 UIKit ?
-
UIViewRepresentable 是
-
你试过这个 .ignoresSafeArea(.keyboard, edges: .bottom)
-
@Yodagama 我有 WebViewRepresentable().edgesIgnoringSafeArea(.all)
-
需要最小的可重现示例。