Próbuję przekonwertować szereg widoków Swiftui w PDF. Myślę, że tylko mam to, z wyjątkiem jednego małego problemu - typ tablicy. Nie mogę dostać widoki do tablicy, którą rozpoznaje pdfkit. W poniższym kodzie, jeśli wymieniam

let tempView = UIHostingController(rootView: view)

Z

let tempView = UIHostingController(rootView: PageOne())   

Kod poniżej działa świetnie. Ale kiedy próbuję umieścić stronę () w tablicy typu Any Dostaję błąd, "Value of protocol type 'Any' cannot conform to 'View'; only struct/enum/class types can conform to protocols", co ma sens. Ale czego nie mam, to jak powinienem to robić.

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")
}
1
squarehippo10 26 październik 2020, 23:28

1 odpowiedź

Najlepsza odpowiedź

Musisz użyć AnyView zamiast Any:

var viewsToConvert = [AnyView]()
viewsToConvert.append(AnyView(PageOne()))
viewsToConvert.append(AnyView(PageTwo()))
1
pawello2222 26 październik 2020, 20:38