質問です。
swiftで画面をタップすることで円を描画するアプリケーションを作りました。
そこで、こんどは描画した円を全削除したいのですが、方法がよくわかりません。回答の方をお願いします。
プログラムは下に記載しておきます。
ViewController.swift
1import UIKit 2 3class ViewController: UIViewController { 4 5 private var myToolBar: UIToolbar! 6 7 override func viewDidLoad() { 8 super.viewDidLoad() 9 // Do any additional setup after loading the view, typically from a nib. 10 11 //ツールバーの設定 12 myToolBar = UIToolbar(frame: CGRectMake(0, self.view.bounds.height - 44, self.view.bounds.width, 40)) 13 myToolBar.layer.position = CGPoint(x: self.view.bounds.width / 2, y: self.view.bounds.height - 20) 14 15 myToolBar.barStyle = .Default 16 myToolBar.tintColor = UIColor.whiteColor() 17 myToolBar.backgroundColor = UIColor.blackColor() 18 19 //ツールバーのボタン生成 20 let myClearToolButton = UIBarButtonItem(title: "Clear", style: .Plain, target: self, action: "onTapClear:") 21 myToolBar.items = [myClearToolButton]//ツールバーにアイテムを追加 22 self.view.addSubview(myToolBar) 23 24 let ovalShapeLayer: CAShapeLayer = CAShapeLayer()//CAShapeLayerのインスタンス生成 25 ovalShapeLayer.strokeColor = UIColor.blackColor().CGColor//図形の枠線の色設定 26 ovalShapeLayer.fillColor = randomColor().CGColor 27 ovalShapeLayer.path = UIBezierPath(ovalInRect: CGRect(x: self.view.bounds.width / 2, y: self.view.bounds.height / 2, width: 50.0, height: 50.0)).CGPath 28 self.view.layer.addSublayer(ovalShapeLayer) 29 30 } 31 32 override func didReceiveMemoryWarning() { 33 super.didReceiveMemoryWarning() 34 // Dispose of any resources that can be recreated. 35 } 36 37 override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) { 38 if let touch = touches.first { 39 let pos = touch.locationInView(self.view) 40 print(pos) 41 42 drawOval(posx: pos.x, posy: pos.y) 43 } 44 } 45 46 internal func onTapClear(sender: UIBarButtonItem) { 47 print("Clear") 48 } 49 50 func drawOval(posx x: CGFloat, posy y: CGFloat) { 51 let ovalShapeLayer: CAShapeLayer = CAShapeLayer()//CAShapeLayerのインスタンス生成 52 ovalShapeLayer.strokeColor = UIColor.clearColor().CGColor//図形の枠線の色設定 53 ovalShapeLayer.fillColor = randomColor().CGColor 54 //ovalShapeLayer.fillColor = UIColor.blackColor().CGColor 55 56 ovalShapeLayer.path = UIBezierPath(ovalInRect: CGRect(x: x - 25.0, y: y - 25.0, width: 50.0, height: 50.0)).CGPath 57 58 self.view.layer.addSublayer(ovalShapeLayer) 59 } 60 61 func randomColor() -> UIColor { 62 let rand1 = CGFloat(getRandomNumber(Min: 0, Max: 1.0)) 63 let rand2 = CGFloat(getRandomNumber(Min: 0, Max: 1.0)) 64 let rand3 = CGFloat(getRandomNumber(Min: 0, Max: 1.0)) 65 let rand4 = CGFloat(getRandomNumber(Min: 0, Max: 1.0)) 66 67 print("rand1 is \(rand1)") 68 print("rand2 is \(rand2)") 69 print("rand3 is \(rand3)") 70 print("rand4 is \(rand3)") 71 72 let randColor = UIColor(red: rand1, green: rand2, blue: rand3, alpha: rand4) 73 74 return randColor 75 } 76 77 func getRandomNumber(Min _Min : Float, Max _Max : Float)->Float { 78 79 return ( Float(arc4random_uniform(UINT32_MAX)) / Float(UINT32_MAX) ) * (_Max - _Min) + _Min 80 } 81} 82
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。