import Cocoa import WebKit class ViewController: NSViewController { var webView: WKWebView { return view as! WKWebView } override func loadView() { view = WKWebView(/*frame: CGRect(x: 0,y: 0,width: 200,height: 200)*/) } override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. webView.loadHTMLString("<html><body><p>Hello,World!</p></body></html>",baseURL: nil) } }
我重写了loadView()来直接创建一个WKWebView并将其分配给ViewController的view属性作为根视图,而不是加载在故事板中定义的视图.
请注意,WKWebView的框架参数可能被注释出来,以显示这个问题根源的不同行为.
期望的行为
WKWebView实例应该填写对应于每个文档的窗口,新文档窗口的初始大小和位置应该是为故事板中的NSWindow定义的(480×270(196,240)). WKWebView应该使用包围窗口调整大小.
观察行为
没有框架参数
没有框架参数,运行应用程序时不会显示文档窗口,即使Window菜单显示已创建“Untitled”文档.当使用文件>创建更多文档(无标题2等)时,也不会显示文档窗口.新.
但是,如果使用View>全屏显示文档,进入全屏,WKWebView及其问候语将按预期显示.
与框架参数
使用框架参数,包含WKWebView及其问候语的文档窗口将以CGRect中给出的大小和位置显示.
题
我不明白为什么当WKWebView的框架没有被指定时,这个视图在全屏模式下被强制到容器的大小(屏幕),但是在窗口模式中,相反的情况似乎是这样:窗口被强制到(退化?)大小的视图,因此变得不可见.我期待新的观点采用在故事板中定义的窗口的大小.
在我的ViewController中,如何配置我的WKWebView实例以填充文档框架对应的每个NSDocument的NSWindow?或者,也许我的方法是错误的,我应该接受ViewController.loadView()中的视图大小配置初始窗口大小?
override func loadView() { super.loadView() view = WKWebView(frame:self.view.frame) }
您还可以尝试设置网页视图的背景颜色,以查看其工作.
webView.loadHTMLString(“< html>< body bgcolor = red>< p> Hello,World!< / p>< / body>< / html>”,baseURL:nil)