Aplicando gradiente à UIImage sem problemas

Eu estou tentando aplicar gradiente para UIImage usando CoreGraphic; no entanto, o resultado obtido não é muito bom. Quero criar um gradiente de preto a transparente na parte inferior da imagem para criar um contraste para eu colocar algum texto. No entanto, o gradiente que pude não combina bem com a imagem;você pode ver claramente a separação no centro. O resultado que estou procurando é como este aplicativo:http://capptivate.co/2014/02/17/yummly-3/ Como devo aplicar o gradiente para conseguir isso? (Eu tenho que aplicar isso a grande quantidade de imagens).

Meu resultado:

Aqui está o meu 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
}

questionAnswers(2)

yourAnswerToTheQuestion