Mezclar CAGradientLayer utilizado como sombra

Tengo un CAGradientLayer que estoy usando como sombra. Se desvanece del 60% de opacidad para borrar, de izquierda a derecha. En el borde del gradiente, parece estar mezclándose con la capa debajo y aligerar esa capa:

Observe el efecto aligerado de aproximadamente 1 píxel en la foto debajo de la sombra

Hay un "resplandor" de un píxel ancho al final de la sombra, donde se desvanece para borrar. Parece que la foto detrás de la sombra es más clara al final de la sombra. Aquí está un primer plano:

introduzca la descripción de la imagen aquí

Este es el código que produce esa sombra:

CAGradientLayer *layer = [CAGradientLayer layer]; layer.frame = CGRectMake(sideBar.frame.size.width, 0, 7, sideBar.frame.size.height); layer.colors = [NSArray arrayWithObjects: (id)[[[UIColor blackColor] colorWithAlphaComponent:0.6f] CGColor], (id)[[UIColor clearColor] CGColor], nil]; [layer setStartPoint:CGPointMake(0, 0.5)]; [layer setEndPoint:CGPointMake(1, 0.5)]; [sideBar.layer insertSublayer:layer atIndex:0]; sideBar.layer.masksToBounds = NO; 

¿Alguna idea sobre cómo deshacerse de eso?

Tus ojos te engañan. No hay aumento de intensidad en el borde del gradiente. Puede verificar: encogí la image a 1px de altura en la región de la nube y observé los valores de color. imagen reducida a 1px de altura

Sin embargo, la razón por la que está viendo una línea shiny es que las sombras no se ven así. El perfil de transparencia que esperaría ver estaría más cerca de un gaussiano que de una línea recta (que es lo que hace el gradiente lineal).

Recomendaría agregar algunos puntos extra para facilitar el gradiente en la región transparente. Tal vez algo como esto

 layer.colors = [NSArray arrayWithObjects: (id)[[[UIColor blackColor] colorWithAlphaComponent:0.6f] CGColor], (id)[[[UIColor blackColor] colorWithAlphaComponent:0.3f] CGColor], (id)[[[UIColor blackColor] colorWithAlphaComponent:0.1f] CGColor], (id)[[UIColor clearColor] CGColor], nil]; 

Es posible que tenga que boost el tamaño del gradiente para acomodar esta mezcla adicional.