不将 WKWebView 保持在安全区域内的约束
Constraints not keeping WKWebView inside Safe Area
请原谅我的无知。我对 iOS 开发和 Xcode 非常陌生。我已经尝试在该站点上搜索许多页面,但没有找到任何可以直接解决我的问题的页面。您能提供的任何帮助将不胜感激!
我无法让我的网络视图 (WKWebview) 保持在安全区域边界内(我认为这是描述它的最佳方式)。我在 webview 上设置了自动生成的约束,我可以在 Main.Storyboard 编辑器中看到 webview 在安全区域内。
不幸的是,网络视图忽略了这些边界并包含了整个视图,我网页上的文本出现在时间、电池和连接图标后面的显示屏顶部。
我做错了什么?
这是我的代码和一些图片:
import UIKit
import WebKit
class ViewController: UIViewController, WKUIDelegate {
@IBOutlet var webView: WKWebView!
override func loadView() {
let webConfiguration = WKWebViewConfiguration()
webView = WKWebView(frame: .zero, configuration: webConfiguration)
webView.uiDelegate = self
view = webView
}
override func viewDidLoad() {
super.viewDidLoad()
let url = Bundle.main.url(forResource: "bulk_material_table", withExtension: "html")!
webView.loadFileURL(url, allowingReadAccessTo: url)
let request = URLRequest(url: url)
webView.load(request)
}
}
你的约束没问题。问题出在您覆盖的 loadView()
方法上。您不需要创建新的 WKWebView
,因为您使用的是故事板,而 Interface Builder 正在创建它。删除此方法并将 uiDelegate
移动到 viewDidLoad()
:
import UIKit
import WebKit
class ViewController: UIViewController, WKUIDelegate {
@IBOutlet var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
webView.uiDelegate = self // Move delegate here
let url = Bundle.main.url(forResource: "bulk_material_table", withExtension: "html")!
webView.loadFileURL(url, allowingReadAccessTo: url)
let request = URLRequest(url: url)
webView.load(request)
}
}
请原谅我的无知。我对 iOS 开发和 Xcode 非常陌生。我已经尝试在该站点上搜索许多页面,但没有找到任何可以直接解决我的问题的页面。您能提供的任何帮助将不胜感激!
我无法让我的网络视图 (WKWebview) 保持在安全区域边界内(我认为这是描述它的最佳方式)。我在 webview 上设置了自动生成的约束,我可以在 Main.Storyboard 编辑器中看到 webview 在安全区域内。
不幸的是,网络视图忽略了这些边界并包含了整个视图,我网页上的文本出现在时间、电池和连接图标后面的显示屏顶部。
我做错了什么?
这是我的代码和一些图片:
import UIKit
import WebKit
class ViewController: UIViewController, WKUIDelegate {
@IBOutlet var webView: WKWebView!
override func loadView() {
let webConfiguration = WKWebViewConfiguration()
webView = WKWebView(frame: .zero, configuration: webConfiguration)
webView.uiDelegate = self
view = webView
}
override func viewDidLoad() {
super.viewDidLoad()
let url = Bundle.main.url(forResource: "bulk_material_table", withExtension: "html")!
webView.loadFileURL(url, allowingReadAccessTo: url)
let request = URLRequest(url: url)
webView.load(request)
}
}
你的约束没问题。问题出在您覆盖的 loadView()
方法上。您不需要创建新的 WKWebView
,因为您使用的是故事板,而 Interface Builder 正在创建它。删除此方法并将 uiDelegate
移动到 viewDidLoad()
:
import UIKit
import WebKit
class ViewController: UIViewController, WKUIDelegate {
@IBOutlet var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
webView.uiDelegate = self // Move delegate here
let url = Bundle.main.url(forResource: "bulk_material_table", withExtension: "html")!
webView.loadFileURL(url, allowingReadAccessTo: url)
let request = URLRequest(url: url)
webView.load(request)
}
}