CGContextSetStrokeColorWithColor только изменяет состояние контекста, но не выполняет рисование.Единственный рисунок, сделанный в вашем коде, - это CGContextStrokePath в конце.Поскольку каждый вызов CGContextSetStrokeColorWithColor переопределяет значение, установленное предыдущим вызовом, чертеж будет использовать последний набор цветов.
Вам необходимо создать новый путь, задать цвет и затем рисовать в каждом цикле.Как то так:
for(int idx = 0; idx < routeGrabInstance.points.count; idx++)
{
CGContextBeginPath(ctx);
CGContextMoveToPoint(ctx, x1, y1);
CGContextAddLineToPoint(ctx, x2, y2);
CGContextSetStrokeColorWithColor(ctx,tempColor.CGColor);
CGContextStrokePath(ctx);
}