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)
}
}





