You can use a CALayer with a custom mask.
The mask will be a CAShapeLayer with a path that defines the given percentage of the guage.
CALayer *guageLayer = //your CALayer, could be the backing view
CAShapeLayer *guageMask = [[CAShapeLayer alloc] init];
guageMask.path = [self _pathForCurrentGuage]; //bezier path based on your current percentage
guageLayer.mask = guageMask;