我正在使用PDFKit显示简单的PDF。当我将它们显示在UIView的屏幕上时,我使用了下面的代码。
目的:-从内容开始以填充视图-希望在整个屏幕宽度上进行明智填充
override func viewDidLoad() {
super.viewDidLoad()
if let path = Bundle.main.path(forResource: "Disclaimer", ofType: "pdf") {
let url = URL(fileURLWithPath: path)
if let pdfDocument = PDFDocument(url: url) {
pdfView.document = pdfDocument
pdfView.autoScales = true
pdfView.maxScaleFactor = 4.0
pdfView.minScaleFactor = pdfView.scaleFactorForSizeToFit
pdfView.displayMode = .singlePageContinuous
pdfView.displaysPageBreaks = false
}
}
self.view.backgroundColor = UIColor.black
}
Run Code Online (Sandbox Code Playgroud)
在情节提要中,我为UIview设置了一个约束,以填充屏幕的整个宽度-这样做。
使用autoscale销售小于屏幕宽度的PDF文档,基本上可以在pdf周围增加边距。我可以放大并让他的Pdf填充整个屏幕,然后它才溢出并且滚动条开始播放。
如果手动设置比例因子,则可以使单页PDF明智地填满屏幕宽度,但是如果PDF超过一页,则宽度恢复为小于当前的屏幕宽度margin。
最终,我只想用PDF填充整个屏幕宽度,而没有任何边距/间隙。
希望能有所帮助。
更新:以下建议使用的代码-但目前不起作用:
if let path = Bundle.main.path(forResource: pdfObject, ofType: "pdf") {
let url = URL(fileURLWithPath: path)
if let pdfDocument = …Run Code Online (Sandbox Code Playgroud) 如何在PDFView使用PDFKit 时禁用滚动反弹?
显示 PDF 的视图没有滚动弹跳选项。
这是我的代码:
if let path = Bundle.main.path(forResource: pdfObject, ofType: "pdf") {
let url = URL(fileURLWithPath: path)
if let pdfDocument = PDFDocument(url: url) {
pdfView.autoresizesSubviews = true
pdfView.autoresizingMask = [.flexibleWidth, .flexibleHeight,
.flexibleTopMargin, .flexibleLeftMargin]
pdfView.autoScales = true
pdfView.displaysPageBreaks = true
pdfView.displayDirection = .vertical
pdfView.displayMode = .singlePageContinuous
pdfView.document = pdfDocument
pdfView.maxScaleFactor = 4.0
pdfView.minScaleFactor = pdfView.scaleFactorForSizeToFit
}
}
Run Code Online (Sandbox Code Playgroud)
提前致谢(可能是一个非常简单的问题!)
设置文档选择器,用户可以从“文件应用程序”中选择 PDF 文件,并将其保存到我的应用程序文档文件夹中以在应用程序中使用。
打开文档选择器,选择文件 - 但关闭后出现以下错误:
“[DocumentManager] 视图服务确实终止并出现错误:Error Domain=_UIViewServiceErrorDomain Code=1 “(null)”UserInfo={Termminate=disconnect method}”
UIViewController代码:
import UIKit
import CoreData
import PDFKit
import MobileCoreServices
import UniformTypeIdentifiers
class AddDocumentViewController: UIViewController, UIImagePickerControllerDelegate, UINavigationControllerDelegate, UIDocumentPickerDelegate {
@IBAction func chooseFile (_ sender: UIButton) {
fileTypeSelectionInput = fileTypeSelection.selectedSegmentIndex
var documentPicker: UIDocumentPickerViewController!
if #available(iOS 14, *) {
// iOS 14 & later
let supportedTypes: [UTType] = [UTType.pdf]
documentPicker = UIDocumentPickerViewController(forOpeningContentTypes: supportedTypes)
} else {
// iOS 13 or older code
let supportedTypes: [String] = [kUTTypeImage as String]
documentPicker = …Run Code Online (Sandbox Code Playgroud) 我花了很多时间试图解决这个问题,但我没有快乐.
我有一个在我的appDelegate中创建的数组(levelArrayName),它由一个sqlite数据库填充:
class AppDelegate: UIResponder, UIApplicationDelegate {
var window: UIWindow?
var database:COpaquePointer = nil
var levelArray: [[Int]] = []
var levelArrayName: [[String]] = []
func checkdatabase(){
//check is database exist at path.....
var dirPaths:NSString
dirPaths = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as! NSString;
let databasePath = dirPaths.stringByAppendingString("/rugby.sqlite")
let dbpath = databasePath.cStringUsingEncoding(NSUTF8StringEncoding)
let filemanager = NSFileManager.defaultManager()
if (!filemanager.fileExistsAtPath(databasePath))
{
let fileForCopy = NSBundle.mainBundle().pathForResource("rugby",ofType:"sqlite")
filemanager.copyItemAtPath(fileForCopy!, toPath:databasePath, error: nil)
}
let error = sqlite3_open(dbpath!, &database)
if error != SQLITE_OK
{
println("error while opening");
sqlite3_close(database);
} …Run Code Online (Sandbox Code Playgroud) ios ×2
pdfkit ×2
swift ×2
optional ×1
pdfview ×1
scale ×1
scroll ×1
uidocument ×1
uiscrollview ×1
uiview ×1