【问题标题】:Horizontal Scroll to display PDF in Swift水平滚动以在 Swift 中显示 PDF
【发布时间】:2016-10-26 09:15:11
【问题描述】:

我有收藏视图,用户可以下载并在 Web 视图中查看 PDF 文件。我的应用是横向的,所以垂直滚动感觉很奇怪,所以我想让滚动水平。在 Web 视图中可能吗?或者我必须改用滚动视图?很快。

我正在使用 alamofire 下载和我的目的地:

let documentsURL = NSFileManager.defaultManager().URLsForDirectory(.DocumentDirectory, inDomains: .UserDomainMask)[0]

                    let fileURL = documentsURL.URLByAppendingPathComponent("\(magazineObject.title).pdf")

                    return fileURL
                }

这是我查看 pdf 的代码

class RedirectMagazineViewController: UIViewController {

@IBOutlet weak var webView: UIWebView!
@IBOutlet weak var activityIndicator: UIActivityIndicatorView!

var receiveData: NSURL!
var receiveTitle: String = ""

override func viewDidLoad() {
    super.viewDidLoad()
    print("receiveData 2ndVC =>\(receiveData)")
    self.navigationController?.navigationBarHidden = false
    self.title = receiveTitle
    let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0]
    let filePath = "\(documentsPath)/\(receiveTitle).pdf"
    let url = NSURL(fileURLWithPath: filePath)
    let urlRequest = NSURLRequest(URL: url)
    webView.loadRequest(urlRequest)
    activityIndicator.startAnimating()
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}
}

【问题讨论】:

    标签: swift pdf webview


    【解决方案1】:

    一旦您不设计支持水平方式的 pdf 文件,PDF 文件本质上就是页面的集合,您无法水平滚动 pdf 文件,无论您在UIWebView, Chrome, Safari, Preview, FireFox, Windows 8 Reader 等中显示 pdf 。`

    【讨论】:

    • 我尝试在加载请求之前和之后添加该代码,但仍然无法正常工作
    • @Ariel Gemilang - 我已经用示例 pdf 文件测试了这段代码的工作。请检查您是否仍有任何问题让我知道
    • 我在webView.loadRequest(urlRequest) 之后添加webView.scrollView.showsHorizontalScrollIndicator = true webView.scrollView.showsVerticalScrollIndicator = false webView.scalesPageToFit = true webView.delegate = self 我的滚动仍然是垂直的
    • @Ariel Gemilang - 我误以为它是垂直滚动。等我给你正确的代码
    • @Ariel Gemilang - 看我的回答
    【解决方案2】:

    UIWebView 在显示 PDF 时允许您自定义的内容非常有限。启用垂直滚动指示器不会改变任何东西。

    切换到垂直滚动的唯一方法是在CGContextDrawPDFPage 从头开始​​ - 请参阅Apple's documentation for a start

    有各种open sourcecommercial PDF SDK 可以解决这个问题,因为即使只是复制 UIWebView 的功能也是一个非常困难的问题。单独选择文本真的非常非常困难。自 2010 年以来,我一直致力于 PSPDFKit,7 年后我们仍在努力。

    Apple's ZoomingPDFViewer 是一个很好的介绍,如果您愿意投资几个月来自己构建它。

    【讨论】:

      【解决方案3】:

      在 iOS 11 中,Apple 解决了 PDFKit 的问题。

      一个很好的介绍可以找到here

      import PDFKit
      
      @IBOutlet var pdfView: PDFView!
      
      if let pdfDocument = PDFDocument(url: url) {
          pdfView.displayMode = .singlePageContinuous
          pdfView.autoScales = true
          pdfView.displayDirection = .horizontal
          pdfView.document = pdfDocument
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-02
        • 1970-01-01
        • 2021-11-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多