HTML5   发布时间:2022-04-27  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了ios – 如何在Swift中的UIWebView中加载本地PDF大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我目前正试图在UIWebview中显示一个本地的PDF,这是我使用的代码
@IBOutlet weak var webView:UIWebView!
override func viewDidLoad() {
    super.viewDidLoad()    

var pdfLoc = NSURL(fileURLWithPath:NSBundle.mainBundle().pathForresource("Sample",ofType:"pdf")!) 
var request = NSURLrequest(URL: pdfLoc);
self.webView.loadrequest(request);
}

代码将成功构建,但是当我运行该应用程序时,它会崩溃与错误
线程1:EXC_BAD_instrUCTION(代码= EXC-I386_INVOP,子代码= 0x0)

我已经找到了一些关于如何做到这一点的教程,但是他们都是非常过时的,或者是Objective-C.

解决方法

干得好:
if let pdf = NSBundle.mainBundle().URLForresource("myPDF",withExtension: "pdf",subdirectory: nil,localization: nil)  {
            let req = NSURLrequest(URL: pdf)
            let webView = UIWebView(frame: CGRectMake(20,20,self.view.frame.size.width-40,self.view.frame.size.height-40))
            webView.loadrequest(req)
            self.view.addSubview(webView)
        }

编辑

替代方法是通过NSData:

if let pdfURL = NSBundle.mainBundle().URLForresource("myPDF",localization: nil),data = NSData(contentsOfURL: pdfURL),baseURL = pdfURl.URLBydeletingLastPathComponent  {
    let webView = UIWebView(frame: CGRectMake(20,self.view.frame.size.height-40))
    webView.loadData(data,MIMEType: "application/pdf",textEncodingName:"",baseURL: baseURL)
    self.view.addSubview(webView)
}

Apple建议您不要在本地html文件中使用.loadrequest,而不能将其明确地扩展到其他数据类型.所以我提供了上面的NSData路线.如果你想指定一个textEncodingName,它可以是“utf-8”,“UTF-16”等

编辑:Swift 3

这是一个Swift 3版本的代码,正如苹果建议的,WKWebView代替UIWebView.

import UIKit
import WebKit

class ViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view,typically from a nib.

        if let pdfURL = Bundle.main.url(forresource: "myPDF",localization: nil)  {
            do {
                let data = try Data(contentsOf: pdfURL)
                let webView = WKWebView(frame: CGRect(x:20,y:20,width:view.frame.size.width-40,height:view.frame.size.height-40))
                webView.load(data,mimeType: "application/pdf",characterEncodingName:"",baseURL: pdfURl.deletingLastPathComponent())
               view.addSubview(webView)

            }
            catch {
                // catch errors here
            }

        }
    }

}

大佬总结

以上是大佬教程为你收集整理的ios – 如何在Swift中的UIWebView中加载本地PDF全部内容,希望文章能够帮你解决ios – 如何在Swift中的UIWebView中加载本地PDF所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。