swift – 如何配置WKWebView以填充NSWindow?

前端之家收集整理的这篇文章主要介绍了swift – 如何配置WKWebView以填充NSWindow?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个小的原型应用程序开发的 Swift与XCode 7.2.该应用程序是作为基于Cocoa文档的应用程序创建的,具有故事板.因此,该项目包含AppDelegate.swift,Document.swift和Main.storyboard,所有这些都与XCode生成的不同,ViewController.swift包含以下内容
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()中的视图大小配置初始窗口大小?

尝试这种方法.你应该首先调用super.loadView().这将给你从故事板加载的视图的初始大小.然后使用原始视图的框架将视图本身更改为Web视图.希望这能解决你的问题.
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)

原文链接:https://www.f2er.com/swift/319625.html

猜你在找的Swift相关文章