web-dev-qa-db-ja.com

UIImageをPKDrawingに変換またはロードするにはどうすればよいですか?

PNGファイルをPKCanvasViewにロードして、その一部を描画および消去できるようにしたいと思います。これを達成する方法はありますか?

10
rawbee

UIImageViewを使用してPKCanvasViewの後ろに配置し、PKCanvasViewを不透明にfalseに設定し、色をクリアに設定します。描画は問題ありませんが、消去はできません。

1
Lim Thye Chean

まず、UIImageViewをPKCanvasViewの背後に配置し、次にPKCanvasViewを不透明にfalseに設定し、色をクリアに設定します。

次に、PKCanvasViewDelegateで:

func viewForZooming(in scrollView: UIScrollView) -> UIView? {
    return YOUR_IMAGEVIEW
}

func scrollViewDidZoom(_ scrollView: UIScrollView) {

    let offsetX: CGFloat = max((scrollView.bounds.size.width - scrollView.contentSize.width) * 0.5, 0.0)
    let offsetY: CGFloat = max((scrollView.bounds.size.height - scrollView.contentSize.height) * 0.5, 0.0)
    YOUR_IMAGEVIEW.frame.size = CGSize(width: self.view.bounds.width * scrollView.zoomScale, height: self.view.bounds.height * scrollView.zoomScale)
    YOUR_IMAGEVIEW.center = CGPoint(x: scrollView.contentSize.width * 0.5 + offsetX, y: scrollView.contentSize.height * 0.5 + offsetY)

}

Appleが言ったように、imageViewをviewForZoomingに配置するだけで十分ですが、機能しません。そこで、上記のコードをscrollViewDidZoomに追加すると、想定どおりに機能します。

1

PKCanvasViewのsetDrawingを使用する

https://developer.Apple.com/documentation/pencilkit/pkcanvasview/3229950-drawing

セッションビデオ221の26:53の長さを参照してください

See 26:53 of Session video 221

0
guhan0