Drawing a grid on a UIView in Swift
Just Copy and paste the below code and you will be good to go. I haven't check your logic of drawing correct grid i have just solved the not drawing issue. If it draw wrong grid then i will re-check your grid logic for now it just help you to draw something using UIBezierPath
class GridView: UIView
{
private var path = UIBezierPath()
fileprivate var gridWidthMultiple: CGFloat
{
return 10
}
fileprivate var gridHeightMultiple : CGFloat
{
return 20
}
fileprivate var gridWidth: CGFloat
{
return bounds.width/CGFloat(gridWidthMultiple)
}
fileprivate var gridHeight: CGFloat
{
return bounds.height/CGFloat(gridHeightMultiple)
}
fileprivate var gridCenter: CGPoint {
return CGPoint(x: bounds.midX, y: bounds.midY)
}
fileprivate func drawGrid()
{
path = UIBezierPath()
path.lineWidth = 5.0
for index in 1...Int(gridWidthMultiple) - 1
{
let start = CGPoint(x: CGFloat(index) * gridWidth, y: 0)
let end = CGPoint(x: CGFloat(index) * gridWidth, y:bounds.height)
path.move(to: start)
path.addLine(to: end)
}
for index in 1...Int(gridHeightMultiple) - 1 {
let start = CGPoint(x: 0, y: CGFloat(index) * gridHeight)
let end = CGPoint(x: bounds.width, y: CGFloat(index) * gridHeight)
path.move(to: start)
path.addLine(to: end)
}
//Close the path.
path.close()
}
override func draw(_ rect: CGRect)
{
drawGrid()
// Specify a border (stroke) color.
UIColor.purple.setStroke()
path.stroke()
}
}