🌀Image
在 Swift Playgrounds for iPad 中使用 PDF 圖檔。
🌀 Image(pdf: url)
import SwiftUI
// 🌀Image(pdf: url)
extension Image {
public init?(pdf url: URL) {
guard
let doc = CGPDFDocument(url as CFURL),
let page = doc .page(at: 1)
else { return nil }
let pageRect = page.getBoxRect(.mediaBox)
let renderer = UIGraphicsImageRenderer(size: pageRect.size)
let img = renderer.image { ctx in
UIColor.clear.set()
ctx.fill(pageRect)
ctx.cgContext.translateBy(x: 0.0, y: pageRect.size.height)
ctx.cgContext.scaleBy(x: 1.0, y: -1.0)
ctx.cgContext.drawPDFPage(page)
}
self = Image(uiImage: img)
}
}
import SwiftUI
import PlaygroundSupport
struct ContentView: View {
var body: some View {
VStack {
Image(pdf: #fileLiteral(resourceName: "Card1.pdf"))
Image(pdf: #fileLiteral(resourceName: "Card3.pdf"))
}// container
.padding()
.shadow(radius: 8)
.background(Color.gray)
.cornerRadius(10)
}
}
PlaygroundPage.current.setLiveView(ContentView())
使用前,必須先將 PDF 檔匯入 Swift Playgrounds 中:
插入 PDF 檔時,雖然只會出現一個奇怪的小圖,但它背後其實是一個 #fileLiteral (檔名不會顯示出來,除非放在附註區),它的真正型別是 URL。
👉 Swift Literals - NSHipster ⭐