Swift Playground WebView 不会显示本地图像

Posted

技术标签:

【中文标题】Swift Playground WebView 不会显示本地图像【英文标题】:Swift Playground WebView won't display local images 【发布时间】:2017-12-21 20:26:59 【问题描述】:

我正在开发一个 Switft Playground,并试图让一个 WebView 显示完整的 html5 内容,包括图像。目前,如果它来自网络,我能够获得一个 WebView 来显示完整的 HTML5 内容,但如果它是从 Playground 中本地加载的,则只能显示文本。

这是来自我的来源的代码:

import Foundation
import WebKit

import Foundation
import UIKit

public class MyWebKitViewController: UIViewController, WKUIDelegate 

var webView: WKWebView!

public override func loadView() 
    let webConfiguration = WKWebViewConfiguration()
    webView = WKWebView(frame: .zero, configuration: webConfiguration)
    webView.uiDelegate = self
    view = webView


public func loadLocalHtml(filename: String) 
    let possiblePath = Bundle.main.path(forResource: filename, ofType: "html")
    if let path = possiblePath 
        let url = URL(fileURLWithPath: path)
        webView.loadFileURL(url, allowingReadAccessTo: url)


这是我用来调用 loadLocalHtml 函数的代码:

import UIKit
import PlaygroundSupport

//Set current Playground View
let vc = MyWebKitViewController()
PlaygroundPage.current.liveView = vc

vc.loadLocalHtml(filename: "testing")

我已经尝试过其他人在此处针对类似的问题发布的解决方案,但没有成功。在某些情况下,我得到一个只显示白色背景但根本没有内容的 WebView。提前感谢您的帮助!

【问题讨论】:

您是否尝试过实际的单视图应用程序?甚至一个可以上网的? (我不知道有没有什么重要的,但你已经指定了游乐场“WebKit”。)只是想排除一些事情。 我还没有完成单视图应用程序,但我已经完成了嵌入在 Playground 中的 WKWebView 的双视图。它适用于来自 Internet 的内容。感谢您的回复。 【参考方案1】:

这里也是同样的问题。应该是这样的,但我不明白。看起来 Swift Playgrounds 有不同的资源管理方式。在 Xcode Playground 中,您的代码按预期工作

import UIKit
import WebKit
import PlaygroundSupport

let webView = WKWebView(frame: CGRect(x: 0, y: 0, width: 375, height: 667))
if let url = Bundle.main.url(forResource: "index", withExtension: "html") 
    let imageURL = Bundle.main.url(forResource: "image1", withExtension: "png", subdirectory: "images/")
    webView.loadFileURL(url, allowingReadAccessTo: imageURL!)


PlaygroundPage.current.liveView = webView

如果你有办法,请回答:]

【讨论】:

以上是关于Swift Playground WebView 不会显示本地图像的主要内容,如果未能解决你的问题,请参考以下文章

swift Swift String Playground示例

如何检查 Playground 的 swift 版本?

Swift Playground 4:导入 Swift 包

如何在 Playground 中导入 Swift 包?

如何在 Playground 中使用 Swift 包管理器

为啥某些 Swift 标准库函数在 Playground 中无法识别?