PDF 查看器 SWIFT 4 Xcode 10.3
PDFViewer SWIFT 4 Xcode 10.3
这是我的代码。我有一个文件 "dreamGirls.pdf"
import UIKit
import PDFKit
var pdfView : PDFView!
func createPDFViewer() {
let path = Bundle.main.path(forResource: "dreamGirls", ofType: "pdf")
let url = URL(fileURLWithPath: path!)
let pdfDocument = PDFDocument(url:url)
self.pdfView.document = pdfDocument
self.pdfView.autoScales = true
self.pdfView.displayMode = .singlePageContinuous
self.pdfView.displayDirection = .vertical
let width = self.view.frame.width
let height = self.view.frame.height - 100
self.pdfView.frame = CGRect(x: 0, y: 100, width: width, height: height)
self.pdfView.backgroundColor = .red
self.view.addSubview(self.pdfView)
}
我还尝试了以下方法:
func createPDFViewer() {
let fileToShow = Bundle.main.url(forResource: "dreamGirls", withExtension: "pdf")
let documentToShow = PDFDocument(url: fileToShow!)
self.pdfView.document = documentToShow
self.pdfView.autoScales = true
self.pdfView.displayMode = .singlePageContinuous
self.pdfView.displayDirection = .vertical
let width = self.view.frame.width
let height = self.view.frame.height - 100
self.pdfView.frame = CGRect(x: 0, y: 100, width: width, height: height)
self.pdfView.backgroundColor = .red
self.view.addSubview(self.pdfView)
}
错误输出:
致命错误:在隐式展开可选值时意外发现 nil
pdfView PDFView?无 none
我也刚试过这个,得到了同样的错误:
import UIKit
import PDFKit
class ViewController: UIViewController {
var pdfView : PDFView?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let fileToShow = Bundle.main.url(forResource: "dreamGirls", withExtension: "pdf")
let documentToShow = PDFDocument(url: fileToShow!)
self.pdfView!.document = documentToShow!
self.pdfView!.autoScales = true
self.pdfView!.displayMode = .singlePageContinuous
self.pdfView!.displayDirection = .vertical
let width = self.view.frame.width
let height = self.view.frame.height - 100
self.pdfView!.frame = CGRect(x: 0, y: 100, width: width, height: height)
self.pdfView!.backgroundColor = .red
self.view.addSubview(self.pdfView!)
}
}
自我pdfViewerTest.ViewController 0x00007fe538520580
UIKit.UIViewController UIViewController
pdfView PDFView?无 none
文件显示URL? "file:///Users/nacly/Library/Developer/CoreSimulator/Devices/C92B8B59-90C5-4509-A848-99D0B39A4469/data/Containers/Bundle/Application/7D0B63DF-F265-48DB-8887-D0563FD45FDA/pdfViewerTest.app/dreamGirls.pdf"一些
_url NSURL "file:///Users/nacly/Library/Developer/CoreSimulator/Devices/C92B8B59-90C5-4509-A848-99D0B39A4469/data/Containers/Bundle/Application/7D0B63DF-F265-48DB-8887-D0563FD45FDA/pdfViewerTest.app/dreamGirls.pdf" 0x0000600002638120
documentToShow PDF文档? 0x00006000000301d0
ObjectiveC.NSObjectNSObject
宽度 CGFloat
高度 CGFloat
我还尝试了以下方法,以防 PDFView 未初始化:
import UIKit
import PDFKit
class ViewController: UIViewController {
var pdfView : PDFView?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
self.pdfView = PDFView()
let fileToShow = Bundle.main.url(forResource: "dreamGirls", withExtension: "pdf")
let documentToShow = PDFDocument(url: fileToShow!)
self.pdfView!.document = documentToShow!
self.pdfView!.autoScales = true
self.pdfView!.displayMode = .singlePageContinuous
self.pdfView!.displayDirection = .vertical
let width = self.view.frame.width
let height = self.view.frame.height - 100
self.pdfView!.frame = CGRect(x: 0, y: 100, width: width, height: height)
self.pdfView!.backgroundColor = .red
self.view.addSubview(self.pdfView!)
}
它返回了以下错误:
pdfViewerTest[16863:1994476] * 由于未捕获的异常终止应用程序 'CALayerInvalidGeometry',原因:'CALayer position contains NaN: [nan nan]'
* 首先抛出调用堆栈:
好的,我解决了。由于几何形状不佳,我不得不在 "viewDiDAppear" 而不是 "viewDiDLoad" 中进行调用。
这是我的代码。我有一个文件 "dreamGirls.pdf"
import UIKit
import PDFKit
var pdfView : PDFView!
func createPDFViewer() {
let path = Bundle.main.path(forResource: "dreamGirls", ofType: "pdf")
let url = URL(fileURLWithPath: path!)
let pdfDocument = PDFDocument(url:url)
self.pdfView.document = pdfDocument
self.pdfView.autoScales = true
self.pdfView.displayMode = .singlePageContinuous
self.pdfView.displayDirection = .vertical
let width = self.view.frame.width
let height = self.view.frame.height - 100
self.pdfView.frame = CGRect(x: 0, y: 100, width: width, height: height)
self.pdfView.backgroundColor = .red
self.view.addSubview(self.pdfView)
}
我还尝试了以下方法:
func createPDFViewer() {
let fileToShow = Bundle.main.url(forResource: "dreamGirls", withExtension: "pdf")
let documentToShow = PDFDocument(url: fileToShow!)
self.pdfView.document = documentToShow
self.pdfView.autoScales = true
self.pdfView.displayMode = .singlePageContinuous
self.pdfView.displayDirection = .vertical
let width = self.view.frame.width
let height = self.view.frame.height - 100
self.pdfView.frame = CGRect(x: 0, y: 100, width: width, height: height)
self.pdfView.backgroundColor = .red
self.view.addSubview(self.pdfView)
}
错误输出: 致命错误:在隐式展开可选值时意外发现 nil
pdfView PDFView?无 none
我也刚试过这个,得到了同样的错误:
import UIKit
import PDFKit
class ViewController: UIViewController {
var pdfView : PDFView?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let fileToShow = Bundle.main.url(forResource: "dreamGirls", withExtension: "pdf")
let documentToShow = PDFDocument(url: fileToShow!)
self.pdfView!.document = documentToShow!
self.pdfView!.autoScales = true
self.pdfView!.displayMode = .singlePageContinuous
self.pdfView!.displayDirection = .vertical
let width = self.view.frame.width
let height = self.view.frame.height - 100
self.pdfView!.frame = CGRect(x: 0, y: 100, width: width, height: height)
self.pdfView!.backgroundColor = .red
self.view.addSubview(self.pdfView!)
}
}
自我pdfViewerTest.ViewController 0x00007fe538520580
UIKit.UIViewController UIViewController
pdfView PDFView?无 none
文件显示URL? "file:///Users/nacly/Library/Developer/CoreSimulator/Devices/C92B8B59-90C5-4509-A848-99D0B39A4469/data/Containers/Bundle/Application/7D0B63DF-F265-48DB-8887-D0563FD45FDA/pdfViewerTest.app/dreamGirls.pdf"一些
_url NSURL "file:///Users/nacly/Library/Developer/CoreSimulator/Devices/C92B8B59-90C5-4509-A848-99D0B39A4469/data/Containers/Bundle/Application/7D0B63DF-F265-48DB-8887-D0563FD45FDA/pdfViewerTest.app/dreamGirls.pdf" 0x0000600002638120
documentToShow PDF文档? 0x00006000000301d0
ObjectiveC.NSObjectNSObject
宽度 CGFloat
高度 CGFloat
我还尝试了以下方法,以防 PDFView 未初始化:
import UIKit
import PDFKit
class ViewController: UIViewController {
var pdfView : PDFView?
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
self.pdfView = PDFView()
let fileToShow = Bundle.main.url(forResource: "dreamGirls", withExtension: "pdf")
let documentToShow = PDFDocument(url: fileToShow!)
self.pdfView!.document = documentToShow!
self.pdfView!.autoScales = true
self.pdfView!.displayMode = .singlePageContinuous
self.pdfView!.displayDirection = .vertical
let width = self.view.frame.width
let height = self.view.frame.height - 100
self.pdfView!.frame = CGRect(x: 0, y: 100, width: width, height: height)
self.pdfView!.backgroundColor = .red
self.view.addSubview(self.pdfView!)
}
它返回了以下错误:
pdfViewerTest[16863:1994476] * 由于未捕获的异常终止应用程序 'CALayerInvalidGeometry',原因:'CALayer position contains NaN: [nan nan]' * 首先抛出调用堆栈:
好的,我解决了。由于几何形状不佳,我不得不在 "viewDiDAppear" 而不是 "viewDiDLoad" 中进行调用。