Quantcast
Channel: PDF – The Eclectic Light Company
Viewing all articles
Browse latest Browse all 67

SwiftUI on macOS: PDF Help book source code

$
0
0

This is the Swift source code to accompany the article SwiftUI on macOS: PDF Help book.

LittleHelperApp.swift

import SwiftUI

@main
struct LittleHelperApp: App {
    var body: some Scene {
        WindowGroup {
            ContentView()
        }
        
        Window("Help Window", id: "help") {
            HelpView()
        }
        .commands {
            HelpCommands()
        }
    }
}

MenuCommands.swift

import SwiftUI

struct HelpCommands: Commands {
    @Environment(\.openWindow) var openWindow

    var body: some Commands {
        CommandGroup(replacing: .help) {
            Button("LittleHelper Help", action: showHelpWindow)
        }
    }
    func showHelpWindow() {
        openWindow(id: "help")
    }
}

ContentView.swift

import SwiftUI

struct ContentView: View {
   
    var body: some View {
        VStack {
            Image(systemName: "globe")
                .imageScale(.large)
                .foregroundStyle(.tint)
            Text("Hello, world!")
        }
        .padding()
    }
}

#Preview {
    ContentView()
}

HelpView.swift

import SwiftUI
import Quartz

struct PDFKitView: NSViewRepresentable {
    
    typealias NSViewType = PDFView
    
    let url: URL // new variable to get the URL of the document
    
    func makeNSView(context: NSViewRepresentableContext<PDFKitView>) -> PDFView {
        // Creating a new PDFVIew and adding a document to it
        let pdfView = PDFView()
        pdfView.document = PDFDocument(url: self.url)
        pdfView.autoScales = true
        pdfView.displayMode = .singlePage
        return pdfView
    }
    
    func updateNSView(_ uiView: PDFView, context: NSViewRepresentableContext<PDFKitView>) {
        // we will leave this empty as we don't need to update the PDF
    }
}

struct HelpView: View {
    let pdfUrl = Bundle.main.url(forResource: "LittleHelperHelp", withExtension: "pdf")!

    var body: some View {
            PDFKitView(url: pdfUrl)
    }
}

#Preview {
    HelpView()
}

End of code supplement.


Viewing all articles
Browse latest Browse all 67

Trending Articles