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





