Aplicando degradado a UIImage suavemente

Estoy tratando de aplicar gradiente a UIImage usando CoreGraphic; Sin embargo, el resultado que obtuve no es muy bueno. Quiero crear un degradado de negro a transparente en la parte inferior de la imagen para crear un contraste para que pueda colocar algo de texto. Sin embargo, el gradiente que pude no combina bien con la imagen;puedes ver claramente la separación en el centro. El resultado que estoy buscando es como esta aplicación:http://capptivate.co/2014/02/17/yummly-3/ ¿Cómo debo aplicar el gradiente para lograr esto? (Tengo que aplicar esto a una gran cantidad de imágenes).

Mi resultado:

Aquí está mi código:

func imageWithGradient(img:UIImage!) -> UIImage{

    UIGraphicsBeginImageContext(img.size)
    var context = UIGraphicsGetCurrentContext()

    img.drawAtPoint(CGPointMake(0, 0))

    let colorSpace = CGColorSpaceCreateDeviceRGB()
    let locations:[CGFloat] = [0.50, 1.0]
    //1 = opaque
    //0 = transparent
    let bottom = UIColor(red: 0, green: 0, blue: 0, alpha: 0.5).CGColor
    let top = UIColor(red: 0, green: 0, blue: 0, alpha: 0).CGColor

    let gradient = CGGradientCreateWithColors(colorSpace,
        [top, bottom], locations)


    let startPoint = CGPointMake(img.size.width/2, 0)
    let endPoint = CGPointMake(img.size.width/2, img.size.height)

    CGContextDrawLinearGradient(context, gradient, startPoint, endPoint, 0)

    let image = UIGraphicsGetImageFromCurrentImageContext()

    UIGraphicsEndImageContext()

    return image
}