Rob*_*ire 13 macos cocoa nsviewcontroller swift wkwebview
我有一个使用XCode 7.2在Swift中开发的小型原型应用程序.该应用程序是作为带有故事板的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)
}
}
Run Code Online (Sandbox Code Playgroud)
我已覆盖loadView()直接创建a WKWebView并将其作为根视图分配给view属性ViewController,而不是加载故事板中定义的视图.
请注意,可以对该frame参数WKWebView进行评论,以证明该问题根源的不同行为.
甲WKWebView实例应该填充对应于每个文档的窗口中,和初始大小和新的文档窗口位置应当与用于定义NSWindow(在(196,240)小480x270)在故事板中.本WKWebView应与封闭窗口大小调整.
frame争论如果没有的frame参数,运行应用程序时,即使窗口菜单显示的"无题"的文件已创建不显示文档窗口.使用" 文件">"新建"创建更多文档(无标题2等)时,也不会显示文档窗口.
但是,如果文档是使用显示全屏查看>进入全屏模式时,WKWebView预期和问候显示.
frame论点用的frame参数,记录含有所述窗户WKWebView及其问候以在给定的尺寸和位置显示CGRect.
我不明白为什么,当WKWebView没有指定框架时,视图被强制为全屏模式下容器(屏幕)的大小,但是在窗口模式下,相反的看似发生:窗口被强制视图的(简并?)大小,因此变得不可见.我期待新视图采用故事板中定义的窗口大小.
在我ViewController,我如何配置我的WKWebView实例填充NSWindow文档框架产生相应的每个NSDocument?或者,也许我的方法是错误的,我应该通过视图大小来配置初始窗口大小ViewController.loadView()?
试试这个方法。您应该首先调用 super.loadView() 。这将为您提供从故事板加载的视图的初始大小。然后,您可以使用原始视图的框架将视图本身更改为 Web 视图。希望这能解决您的问题。
override func loadView() {
super.loadView()
view = WKWebView(frame:self.view.frame)
}
Run Code Online (Sandbox Code Playgroud)
您还可以尝试设置 Web 视图的背景颜色以查看其工作情况。
webView.loadHTMLString("<html><body bgcolor=red><p>Hello, World!</p></body></html>", baseURL: nil)
| 归档时间: |
|
| 查看次数: |
2909 次 |
| 最近记录: |