iOSアプリのUIImageView上で、画像の指でなぞった部分を消したい。
Swift
1import UIKit 2 3class ViewController: UIViewController { 4 var tapLocation: CGPoint = CGPoint() 5 @IBOutlet weak var imageView: UIImageView! 6 7 override func touchesBegan(_ touches: Set<UITouch>,with event: UIEvent?){ 8 // タッチイベントを取得する 9 let touch = touches.first 10 // タップした座標を取得する 11 tapLocation = touch!.location(in: self.view) 12 13 if let image = UIImage(named: "sample.jpg") { 14 print("size=", image.size) 15 16 //コンテキスト作成/取得 17 UIGraphicsBeginImageContext(image.size) 18 let context = UIGraphicsGetCurrentContext() 19 20 //コンテキストにimageをそのまま描画 21 image.draw(in: CGRect(origin: CGPoint.zero, size: image.size)) 22 23 //くり抜く矩形 24 let rect = CGRect(x: tapLocation.x, y: tapLocation.y, width: 300, height: 400) 25 print("rect=", rect) 26 27 //くり抜き 28 context!.clear(rect) 29 30 //くり抜いた画像をUIImageViewにセット 31 if let cgImage = context!.makeImage() { 32 self.imageView.image = UIImage(cgImage: cgImage) 33 } 34 35 //コンテキスト削除 36 UIGraphicsEndImageContext() 37 } 38 } 39 40 override func viewDidLoad() { 41 super.viewDidLoad() 42 // Do any additional setup after loading the view, typically from a nib. 43 if let image = UIImage(named: "sample.jpg") { 44 print("size=", image.size) 45 46 //コンテキスト作成/取得 47 UIGraphicsBeginImageContext(image.size) 48 let context = UIGraphicsGetCurrentContext() 49 50 //コンテキストにimageをそのまま描画 51 image.draw(in: CGRect(origin: CGPoint.zero, size: image.size)) 52 53 //くり抜く矩形 54 let rect = CGRect(x: 100, y: 200, width: 300, height: 400) 55 print("rect=", rect) 56 57 //くり抜き 58 context!.clear(rect) 59 60 //くり抜いた画像をUIImageViewにセット 61 if let cgImage = context!.makeImage() { 62 self.imageView.image = UIImage(cgImage: cgImage) 63 } 64 65 //コンテキスト削除 66 UIGraphicsEndImageContext() 67 } 68 } 69 70 override func didReceiveMemoryWarning() { 71 super.didReceiveMemoryWarning() 72 // Dispose of any resources that can be recreated. 73 } 74 75 76}
とりあえず、タップした部分を四角く切り取るプログラムは書けたのですが、もっとお絵かきアプリのように丸い消しゴムで消すようなものにしたいです。(できれば太さも選択できるようにしたい)
CGRectがあるならCGCircleもあるかなと思いましたが無いようです。
タッチの座標もなぜかズレてしまっています。
アドバイスを頂けるとうれしいです。よろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。