我正在尝试将一系列SwiftUI视图转换为PDF。除了一个小问题-数组类型之外,我想我几乎可以拥有它。我无法将视图放入PDFKit可以识别的数组中。在下面的代码中,如果我替换
let tempView = UIHostingController(rootView: view)
使用
let tempView = UIHostingController(rootView: PageOne())
下面的代码效果很好。但是,当我尝试将PageOne()放入类型为Any
的数组中时,出现了错误"Value of protocol type 'Any' cannot conform to 'View'; only struct/enum/class types can conform to protocols"
,这是有道理的。但是我没有得到的是我应该怎么做。
var viewsToConvert = [Any]()
viewsToConvert.append(PageOne())
viewsToConvert.append(PageTwo())
let pdfData = NSMutableData()
let pdfPageFrame = CGRect(x: 0, y: 0, width: width, height: height)
UIGraphicsBeginPDFContextToData(pdfData, pdfPageFrame, nil)
let graphicsContext = UIGraphicsGetCurrentContext()
for view in viewsToConvert {
let tempView = UIHostingController(rootView: view)
tempView.view.frame = CGRect(x: 0, y: 0, width: width, height: height)
UIGraphicsBeginPDFPage()
tempView.view.layer.render(in: graphicsContext!)
tempView.removeFromParent()
tempView.view.removeFromSuperview()
}
UIGraphicsEndPDFContext()
return saveViewPdf(data: pdfData, fileName: "Quote")
}
答案 0 :(得分:1)
您需要使用AnyView
而不是Any
:
var viewsToConvert = [AnyView]()
viewsToConvert.append(AnyView(PageOne()))
viewsToConvert.append(AnyView(PageTwo()))