如何将完整的 uicollectionview 打印到图像或 pdf

Posted

技术标签:

【中文标题】如何将完整的 uicollectionview 打印到图像或 pdf【英文标题】:How to print a full uicollectionview to an image or a pdf 【发布时间】:2016-08-03 16:13:13 【问题描述】:

大家!

我正在使用 Swift 3,但如果 Swift 3 没有解决方案,我愿意使用 Swift 2。

我有一个 UICollectionView 和一个 UIImageView,它们与图像一起包含在 UIView 中(所有这些都包含在 UIScrollView 中,这意味着很多内容都在屏幕外)。如果我不知道如何用 UICollectionView 和 UIImageView 的全部内容打印出 UIView(或至少是 UICollectionView)的内容,我正在制作的应用程序将毫无用处。

我已经研究了一天,想出了我将在下面列出的资源,但我仍然不知道如何实现我的目标。有人对我有什么建议吗?

打印集合视图的一种可能替代方法是创建一个 PDF 或图像,其中包含集合视图中包含的信息(一个图像和每个单元格 3 个标签),而不必打印集合视图本身。如果您能指出一种方法来做到这一点,那将同样有帮助。

感谢您的宝贵时间!

我的研究结果:(堆栈溢出不会让我发布两个以上的链接,所以请原谅切碎的链接) Apple 文档:(我还无法理解这一点,但我正在努力弄清楚。) https://developer。 apple .com /library/ios/documentation/2DDrawing/Conceptual/DrawingPrintingiOS/GeneratingPDF/GeneratingPDF.html

疯狂的框架库,包括 pdf 生成器: github。 com /vsouza/awesome-ios#pdf

如何使用 swift 将 UIView 转换为图像:(我不知道这是否会截取页面上的内容,或者是否会截取整个视图。) How to convert a UIview to a image

苹果函数文档:(这是对上述***问题链接的补充。) 开发商。苹果。 com/library/ios/documentation/UIKit/Reference/UIKitFunctionReference/#//apple_ref/c/func/UIGraphicsGetImageFromCurrentImageContext

PDFGenerator:(这个最有潜力,但我还不知道怎么用。) https://github.com/sgr-ksmt/PDFGenerator

【问题讨论】:

【参考方案1】:

PDFGenerator Features:

UIScrollView 支持:如果视图是 UIScrollView、UITableView、UICollectionView、UIWebView,则绘制整个内容。

他们在 github 上也有一个演示应用程序。

示例字体:ScrollView:

func generatePDF() 
    let v1 = UIScrollView(frame: CGRect(x: 0.0,y: 0, width: 100.0, height: 100.0))
    let v2 = UIView(frame: CGRect(x: 0.0,y: 0, width: 100.0, height: 200.0))
    let v3 = UIView(frame: CGRect(x: 0.0,y: 0, width: 100.0, height: 200.0))
    v1.backgroundColor = .red
    v1.contentSize = CGSize(width: 100.0, height: 200.0)
    v2.backgroundColor = .green
    v3.backgroundColor = .blue

    let dst = URL(fileURLWithPath: NSTemporaryDirectory().appending("sample1.pdf"))
    // outputs as Data
    do 
        let data = try PDFGenerator.generated(by: [v1, v2, v3])
        data.write(to: dst, options: .atomic)
     catch (let error) 
        print(error)
    

    // writes to Disk directly.
    do 
        try PDFGenerator.generate([v1, v2, v3], to: dst)    
     catch (let error) 
        print(error)
    

【讨论】:

以上是关于如何将完整的 uicollectionview 打印到图像或 pdf的主要内容,如果未能解决你的问题,请参考以下文章

UICollectionView 拖放单元格

带有 UICollectionViewCompositionalLayout 的单行水平 UICollectionView 的不完整删除动画

iOS:`UICollectionview`,如何通过它的`indexPath`获取单元格的`contentoffset`

如果 UICollectionView 没有足够的单元格来填充一行,则使第一行不完整而不是最后一行

UICollectionView 在启用分页的情况下不会滚动完整的 320 点

如何将 UICollectionViewCell 从一个 UICollectionView 拖到另一个 UICollectionView?