現在Viewの中にもう一つView(worldView)があるアプリケーションを作っています。
worldViewの中にCAShapeLayerでセルを作り格子状に配置しています(画像参照)
このworldView上をドラッグされたら、ドラッグされたセルの色の変更をリアルタイムで行いたいです。
touchesMovedメソッド内で試してみましたが思うような処理を実装できません。
どなたかお力添いいただければ幸いです。
Swift
1import UIKit 2 3class ViewController: UIViewController { 4 5 @IBOutlet weak var worldView: UIView! 6 7 var mapCell:[[CAShapeLayer]] = [[]] 8 let cellSize:Int = 10 9 var numberOfColumns:Int = 0 10 var numberOfRows:Int = 0 11 12 override func viewDidLoad() { 13 super.viewDidLoad() 14 } 15 16 override func viewDidLayoutSubviews() { 17 super.viewDidLayoutSubviews() 18 19 numberOfRows = Int(worldView.frame.width) / cellSize 20 numberOfColumns = Int(worldView.frame.height) / cellSize 21 22 for r in 0 ..< numberOfRows { 23 mapCell.append([CAShapeLayer]()) 24 for c in 0 ..< numberOfColumns { 25 let tempShapeLayer = CAShapeLayer.init() 26 //tempShapeLayer.frame = CGRect.init(x: (r*cellSize), y: (c*cellSize), width:cellSize, height:cellSize) 27 tempShapeLayer.path = UIBezierPath.init(rect: CGRect.init(x: (r*cellSize), y: (c*cellSize), width:cellSize, height:cellSize)).cgPath 28 tempShapeLayer.fillColor = UIColor.white.cgColor 29 tempShapeLayer.strokeColor = UIColor.black.cgColor 30 mapCell[r].append(tempShapeLayer) 31 worldView.layer.addSublayer(mapCell[r][c]) 32 } 33 } 34 } 35 36 override func touchesMoved(_ touches: Set<UITouch>, with event: UIEvent?) { 37 38 } 39}
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。