質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
iPad

iPadは、Appleがデザインしたタブレット型コンピュータです。iPadアプリケーションは通常Xcode IDEのObjective-Cで書かれますが、iPadアプリケーションを組むためのほかのツールを使うことも可能です。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

Q&A

解決済

2回答

2569閲覧

画像に描いた線を含めて画像を保存

as0408

総合スコア1

iPad

iPadは、Appleがデザインしたタブレット型コンピュータです。iPadアプリケーションは通常Xcode IDEのObjective-Cで書かれますが、iPadアプリケーションを組むためのほかのツールを使うことも可能です。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

0グッド

0クリップ

投稿2020/09/21 11:33

編集2020/09/21 12:19

PencilKitを用いて画像に描くアプリを作っています。画像の保存はできるのですが、PencilKitを用いて描いた線が反映されません。どこに不備や間違いがあるかご教示いただきたいです。

import UIKit import PencilKit class PencilViewController: UIViewController, PKCanvasViewDelegate { private lazy var canvasView: PKCanvasView = setupCanvasView() private lazy var imageView: UIImageView = setupImageView() override func viewDidLoad() { super.viewDidLoad() // Do any additional setup after loading the view. self.canvasView.addSubview(self.imageView) self.canvasView.sendSubviewToBack(self.imageView) self.view.addSubview(self.canvasView) navigationItem.rightBarButtonItem = UIBarButtonItem(title: "Save To Photo", style: .plain, target: self, action: #selector(save)) } func scrollViewDidZoom(_ scrollView: UIScrollView) { if scrollView == self.canvasView { self.imageView.frame.size = CGSize(width: self.view.frame.width * scrollView.zoomScale, height: self.view.frame.height * scrollView.zoomScale) self.imageView.center = CGPoint(x: scrollView.contentSize.width / 2, y: scrollView.contentSize.height / 2) } } private func setupCanvasView() -> PKCanvasView { let canvasView: PKCanvasView = PKCanvasView(frame: self.view.frame) canvasView.delegate = self canvasView.maximumZoomScale = 5.0 canvasView.isOpaque = false canvasView.backgroundColor = .clear canvasView.contentOffset = CGPoint.zero canvasView.contentSize = self.view.frame.size canvasView.tool = PKInkingTool(.pen, color: .black, width: 30) // PKToolPicker: ドラッグして移動できるツールパレット (ペンや色などを選択できるツール) if let window = UIApplication.shared.windows.first { if let toolPicker = PKToolPicker.shared(for: window) { toolPicker.addObserver(canvasView) toolPicker.setVisible(true, forFirstResponder: canvasView) canvasView.becomeFirstResponder() } } return canvasView } private func setupImageView() -> UIImageView { let imgView = UIImageView(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: self.view.frame.height)) imgView.image = UIImage(named: "Blackboard 英語") imgView.contentMode = UIView.ContentMode.scaleAspectFit return imgView } @IBAction func save(_ sender: UIBarButtonItem) { let image:UIImage! = imageView.image if image != nil { UIImageWriteToSavedPhotosAlbum(image, self, #selector(PencilViewController.image(_:didFinishSavingWithError:contextInfo:)), nil) print("アルバム保存 開始") }else{ } } // Album save 結果 @objc func image(_ image: UIImage, didFinishSavingWithError error: NSError!, contextInfo: UnsafeMutableRawPointer) { if error != nil { }else{ print("アルバム保存 終了") } } }

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_waiwai

2020/09/21 12:00

このままではコードが読みづらいので、質問を編集し、<code>ボタンを押し、出てくる’’’の枠の中にコードを貼り付けてください
as0408

2020/09/21 12:19

ご指摘ありがとうございます。
tsuki01

2020/09/23 13:50

現在はImageViewの画像しか保存していないため、描画内容が反映されていないのではないでしょうか。 描画内容はあくまで「PKCanvasView」が保持していると思うので、以下手順などでImageを合成してから保存するのはいかがでしょうか。 1、UIImageViewからImageを抽出 2、PKCanvasViewから、描画内容をImageとして抽出 3、上記の1・2のImageを合成して保存 もしくは以下参考URLの様に、特定のView上をすべてキャプチャしてしまうなど。 https://qiita.com/tatetate55/items/a31dcb6944b3f068bdd4
as0408

2020/09/24 12:06

できました!ありがとうございます!!
guest

回答2

0

投稿2020/09/24 12:10

編集2020/09/24 12:11
as0408

総合スコア1

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

自己解決

tsuki01さんからのコメントにより解決。
いただいた参考URL
https://qiita.com/tatetate55/items/a31dcb6944b3f068bdd4

投稿2020/09/24 12:08

as0408

総合スコア1

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問