How to align UIBezierPath circle dashes

Instead, I would recommend drawing each tick individually. Then you can easily control their location.

Something like this:

let path = UIBezierPath()
let innerRadius: CGFloat = 50
let outerRadius: CGFloat = 60
let numTicks = 24

for i in 0..<numTicks {
    let angle = CGFloat(i) * CGFloat(2*M_PI) / CGFloat(numTicks)
    let inner = CGPoint(x: innerRadius * cos(angle), y: innerRadius * sin(angle))
    let outer = CGPoint(x: outerRadius * cos(angle), y: outerRadius * sin(angle))
    path.moveToPoint(inner)
    path.addLineToPoint(outer)
}

Then you can stroke this path with whatever lineWidth (and lineCapStyle) you want.