PaperKit(もちろんベータ版)をSwiftUIで試す
PaperKit
Documentより
https://developer.apple.com/documentation/paperkit
図面、図形、一貫したマークアップ体験をAppに追加します。
WWDC25動画
https://developer.apple.com/jp/videos/play/wwdc2025/285
サンプルコード
あっているのか疑問が少し残っているが、ひとまず。
import Foundation import SwiftUI import UIKit import PaperKit import PencilKit struct PaperMarkupViewControllerRepresentable: UIViewControllerRepresentable { let viewSize: CGSize func makeUIViewController(context: Context) -> PaperMarkupViewController { let markupModel = PaperMarkup(bounds: CGRect(x: 0, y: 0, width: self.viewSize.width, height: self.self .viewSize.height)) let paperViewController = PaperMarkupViewController(markup: markupModel, supportedFeatureSet: .latest) paperViewController.view.becomeFirstResponder() let toolPicker = PKToolPicker() toolPicker.addObserver(paperViewController) paperViewController.pencilKitResponderState.activeToolPicker = toolPicker paperViewController.pencilKitResponderState.toolPickerVisibility = .visible paperViewController.addButtonAction(toolPicker: toolPicker) return paperViewController } func updateUIViewController(_ paperMarkupViewController: PaperMarkupViewController, context: Context) { } } extension PaperMarkupViewController { func addButtonAction(toolPicker: PKToolPicker) { toolPicker.accessoryItem = UIBarButtonItem(barButtonSystemItem: .add, target: self, action: #selector(plusButtonPressed(_:))) } @objc func plusButtonPressed(_ button: UIBarButtonItem) { let markupEditViewController = MarkupEditViewController(supportedFeatureSet: .latest) markupEditViewController.delegate = self as? any MarkupEditViewController.Delegate markupEditViewController.modalPresentationStyle = .popover markupEditViewController.popoverPresentationController?.barButtonItem = button self.present(markupEditViewController, animated: true) } }