小编Nic*_*mer的帖子

iOS PDFKit无法填充UIView

我正在使用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)

scale pdfkit uiview pdfview ios

6
推荐指数
1
解决办法
1821
查看次数

iOS PDFKit 禁用垂直滚动反弹

如何在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)

提前致谢(可能是一个非常简单的问题!)

scroll pdfkit uiscrollview ios swift

5
推荐指数
1
解决办法
988
查看次数

如何解决关闭文档选择器时出现的错误

设置文档选择器,用户可以从“文件应用程序”中选择 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)

uidocument uidocumentpicker

5
推荐指数
0
解决办法
298
查看次数

Swift:设置单元格文本标签时无法摆脱"可选"

我花了很多时间试图解决这个问题,但我没有快乐.

我有一个在我的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)

optional swift

3
推荐指数
1
解决办法
3989
查看次数