PaperKit(もちろんベータ版)をSwiftUIで試す3 背景を透過する
背景透過のために追加した部分
paperViewController.viewへの設定のみでは透過しませんでした。
paperViewController.contentViewがnilだと、白背景のCanvasで設定されるとのこと。
/// The content that markup happens on top of.
///
/// The content view is sized to the frame of the `markup`, and added below all the markup and drawing.
/// If this is `nil` then the markup happens on top of a blank white canvas.
let contentView = UIView(frame: .zero) contentView.isOpaque = false contentView.backgroundColor = .clear paperViewController.contentView = contentView paperViewController.view.backgroundColor = .clear paperViewController.view.isOpaque = false
全体
import Foundation import SwiftUI import UIKit import PaperKit import PencilKit struct PaperMarkupViewControllerRepresentable: UIViewControllerRepresentable { let viewSize: CGSize @Binding var pkToolPicker: PKToolPicker 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() self.pkToolPicker.addObserver(paperViewController) paperViewController.pencilKitResponderState.activeToolPicker = self.pkToolPicker paperViewController.pencilKitResponderState.toolPickerVisibility = .visible paperViewController.addButtonAction(toolPicker: self.pkToolPicker) paperViewController.delegate = context.coordinator let contentView = UIView(frame: .zero) contentView.isOpaque = false contentView.backgroundColor = .clear paperViewController.contentView = contentView paperViewController.view.frame = .zero paperViewController.view.backgroundColor = .clear paperViewController.view.isOpaque = false return paperViewController } func updateUIViewController(_ paperMarkupViewController: PaperMarkupViewController, context: Context) { } class Coordinator: NSObject, PaperMarkupViewController.Delegate { let parent: PaperMarkupViewControllerRepresentable init(parent: PaperMarkupViewControllerRepresentable) { self.parent = parent } // PaperMarkupViewController.Delegate func paperMarkupViewControllerDidChangeMarkup(_ paperMarkupViewController: PaperMarkupViewController) { print("\(#function)") } func paperMarkupViewControllerDidChangeSelection(_ paperMarkupViewController: PaperMarkupViewController) { print("\(#function)") } func paperMarkupViewControllerDidBeginDrawing(_ paperMarkupViewController: PaperMarkupViewController) { print("\(#function)") } func paperMarkupViewControllerDidChangeContentVisibleFrame(_ paperMarkupViewController: PaperMarkupViewController) { print("\(#function)") } } func makeCoordinator() -> Coordinator { Coordinator(parent: self) } } 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.modalPresentationStyle = .popover markupEditViewController.popoverPresentationController?.barButtonItem = button markupEditViewController.delegate = self as? any MarkupEditViewController.Delegate self.present(markupEditViewController, animated: true) } }