iOS se desvanece en negro en la parte superior de UIImageView

Tengo una UITableView donde mi celda backgroundView es un UIImageView . Me gustaría que la parte superior de cada image se desvanezca en negro para que pueda superponer un poco de text blanco.

He mirado algunas respuestas como esta , pero ninguna parece funcionar.

En tableView(tableView: UITableView, cellForRowAtIndexPath indexPath: NSIndexPath) he intentado:

 var imageView = UIImageView(image: image) var gradient: CAGradientLayer = CAGradientLayer() gradient.frame = imageView.frame gradient.colors = [UIColor.blackColor(), UIColor.clearColor()] gradient.locations = [0.0, 0.1] imageView.layer.insertSublayer(gradient, atIndex: 0) cell!.backgroundView = imageView 

Pero no veo gradiente y no hay diferencia de cuando elimino el código de gradiente. ¿Mi pendiente está debajo de la image?

Si reemploop la línea imageView.layer.insertSublayer(gradient, atIndex: 0) con imageView.layer.mask = gradient entonces mis celdas están en blanco y en blanco (no hay más imágenes).

En su gradient.colors necesita tener una matriz de CGColor , por lo que:

 gradient.colors = [UIColor.blackColor().CGColor, UIColor.clearColor().CGColor] 

Olvidé cómo se ordera la matriz de capas. Sin embargo, solo debe agregar su capa de degradado sobre la capa de la vista de su image usando addSubLayer, no insertSublayer: atIndex: desea que la capa de degradado esté sobre la otra capa para que las partes no opacas cubran la vista de la image.

Para Swift 3.0, se requieren algunos pequeños retoques:

  let gradient: CAGradientLayer = CAGradientLayer() gradient.frame = imageView.frame gradient.colors = [UIColor.black.cgColor, UIColor.clear.cgColor] gradient.locations = [0.0, 0.1] imageView.layer.insertSublayer(gradient, at: 0)