如何在 iOS 应用程序中使用 PDFThumbnailView
How to use PDFThumbnailView in iOS app
我正在尝试使用 PDFKit 中的 PDFThumbnailView 来显示 pdf 文档的缩略图,但我无法让它工作。控制台中没有显示任何错误。我只是得到一个空白 viewController。下面是我的代码。请有人告诉我哪里出错了?
我拖了一个 UIView 对象并给它赋值如下 class 'PDFThumbnailView'.
import UIKit
import PDFKit
class pdfThumbNailViewController: UIViewController {
@IBOutlet weak var myThumbNailView: PDFThumbnailView!
override func viewDidLoad() {
super.viewDidLoad()
// create PDFView Object
// Then assign this object as the variable of thumbnailview object
let myPDFViewObject = PDFView.init()
if let path = Bundle.main.path(forResource: "paper", ofType: "pdf"){
let url = URL.init(fileURLWithPath: path)
if let pdfDocument = PDFDocument.init(url: url){
myPDFViewObject.document = pdfDocument
}
}
// Setting thumbnail size
let size = CGSize.init(width: 50, height: 50)
myThumbNailView.thumbnailSize = size
myThumbNailView.layoutMode = .vertical
myThumbNailView.pdfView = myPDFViewObject
}
}
你得到一个空白 ViewController 因为你根本没有使用你的 myThumbnailView
..
在 viewDidLoad
中,您创建了一个缩略图视图并为其分配了数据,但您从未真正使用过 IBOutlet myThumbNailView
.. 因此它是空白的,当 [=11] 时本地视图被释放=]完成。
TLDR:thumbNailObject != myThumbNailView
..您使用了错误的对象引用。
是的 - 在您当前的代码中存在内存问题,这就是为什么您最后什么都看不到的原因:
您已经在 viewDidLoad()
中定义了 let myPDFViewObject: PDFView
,它只存在于该方法块中;一旦到达该方法的末尾,您的 PDFView
就会被释放,反过来 PDFThumbnailView
不再有关联的 PDFView
。
您只需将 let myPDFViewObject: PDFView
移动到 viewDidLoad()
的上方和外侧即可解决您的问题,这可确保 PDFView
的寿命更长
编码愉快!
let myPDFViewObject = PDFView()
override func viewDidLoad() {
super.viewDidLoad()
// Then assign this object as the variable of thumbnailview object
if let path = Bundle...
我正在尝试使用 PDFKit 中的 PDFThumbnailView 来显示 pdf 文档的缩略图,但我无法让它工作。控制台中没有显示任何错误。我只是得到一个空白 viewController。下面是我的代码。请有人告诉我哪里出错了?
我拖了一个 UIView 对象并给它赋值如下 class 'PDFThumbnailView'.
import UIKit
import PDFKit
class pdfThumbNailViewController: UIViewController {
@IBOutlet weak var myThumbNailView: PDFThumbnailView!
override func viewDidLoad() {
super.viewDidLoad()
// create PDFView Object
// Then assign this object as the variable of thumbnailview object
let myPDFViewObject = PDFView.init()
if let path = Bundle.main.path(forResource: "paper", ofType: "pdf"){
let url = URL.init(fileURLWithPath: path)
if let pdfDocument = PDFDocument.init(url: url){
myPDFViewObject.document = pdfDocument
}
}
// Setting thumbnail size
let size = CGSize.init(width: 50, height: 50)
myThumbNailView.thumbnailSize = size
myThumbNailView.layoutMode = .vertical
myThumbNailView.pdfView = myPDFViewObject
}
}
你得到一个空白 ViewController 因为你根本没有使用你的 myThumbnailView
..
在 viewDidLoad
中,您创建了一个缩略图视图并为其分配了数据,但您从未真正使用过 IBOutlet myThumbNailView
.. 因此它是空白的,当 [=11] 时本地视图被释放=]完成。
TLDR:thumbNailObject != myThumbNailView
..您使用了错误的对象引用。
是的 - 在您当前的代码中存在内存问题,这就是为什么您最后什么都看不到的原因:
您已经在 viewDidLoad()
中定义了 let myPDFViewObject: PDFView
,它只存在于该方法块中;一旦到达该方法的末尾,您的 PDFView
就会被释放,反过来 PDFThumbnailView
不再有关联的 PDFView
。
您只需将 let myPDFViewObject: PDFView
移动到 viewDidLoad()
的上方和外侧即可解决您的问题,这可确保 PDFView
的寿命更长
编码愉快!
let myPDFViewObject = PDFView()
override func viewDidLoad() {
super.viewDidLoad()
// Then assign this object as the variable of thumbnailview object
if let path = Bundle...