Как показать локальное изображение с iphone (с URL-адресом пути) в WKWebview, используя HTML-тег img или javascript? - PullRequest
0 голосов
/ 12 июня 2019

Я хочу отобразить панорамное изображение, используя Pannellum (https://pannellum.org/download/) html, css & js файлы. Каким-то образом мне это удалось, но локальные панорамные изображения не отображаются, говоря: «Файл не доступен». сделать его полностью автономным, он также должен загружать локальные изображения, как я могу заставить его загружать изображения с iphone, используя локальный URL-адрес изображения?

Я должен фактически передать URL-адрес в виде строки js, которая добавляется в WKUserContentController, а затем WKWebView настраивается с ее использованием. Я пытался создать URL-адрес с классом URL swift, а также с классом NSURL, но ни один не работал. Также попытался передать в base64 образ на всякий случай, если он работает.

func addCustomScript (string: String) { let script = WKUserScript (источник: строка ,jectionTime: .atDocumentEnd, forMainFrameOnly: true) self.addUserScript (сценарий) }

переопределить функцию loadView () { super.loadView ()

    let webConfiguration = WKWebViewConfiguration()
    let contentController = WKUserContentController()

    contentController.addCssFromFile(name: "pannellum")
    contentController.addJavascriptFromFile(name: "pannellum")

    //Panoramic Image
    let imagePath = Bundle.main.path(forResource: "panorama", ofType: "jpg")!
    let imgNSUrl = NSURL(fileURLWithPath: imagePath)
    let imageURL = URL(fileURLWithPath: imagePath)

    print("imagePath : \(imagePath)") //output : /var/containers/Bundle/Application/94C69C64-FC83-45AF-B1BE-0D1B2BDA4306/EasyOne360.app/panorama.jpg
    print("imageURL : \(imageURL)") //output : file:///var/containers/Bundle/Application/94C69C64-FC83-45AF-B1BE-0D1B2BDA4306/EasyOne360.app/panorama.jpg

    //Add pannellum viewer
    let scriptSourcePano = "pannellum.viewer('panorama', { \"type\": \"equirectangular\", \"panorama\": \"\(imgNSUrl)\", \"autoLoad\": true });"
    contentController.addCustomScript(string: scriptSourcePano)

    //Dimensions of box
    let scriptSource = "var pano = document.getElementById('panorama'); if (pano) {pano.style.width = '360px'; pano.style.height = '600px'; }"
    contentController.addCustomScript(string: scriptSource)

    webConfiguration.userContentController = contentController

    webView = WKWebView(frame: .zero, configuration: webConfiguration)
    webView.uiDelegate = self
    view = webView

}

Я хочу, чтобы он загружался вот так (используя этот URL - https://pannellum.org/images/cerro-toco-0.jpg в качестве примера)

...