La capa de gradiente blanca a transparente de iOS es gris

Tengo un CAGradientLayer insertado en la parte inferior de esta pequeña vista de detalle que aparece en la parte inferior de la aplicación. Como puede ver, he establecido los colors de blanco a claro, pero hay un extraño tono gris que está apareciendo. ¿Algunas ideas?

// Set up detail view frame and gradient [self.detailView setFrame:CGRectMake(0, 568, 320, 55)]; CAGradientLayer *layer = [CAGradientLayer layer]; layer.frame = self.detailView.bounds; layer.colors = [NSArray arrayWithObjects:(id)[UIColor whiteColor].CGColor, (id)[UIColor clearColor].CGColor, nil]; layer.startPoint = CGPointMake(1.0f, 0.7f); layer.endPoint = CGPointMake(1.0f, 0.0f); [self.detailView.layer insertSublayer:layer atIndex:0]; 

Aquí está la vista problemática:

Aquí está la vista problemática

clearColor tiene un canal de color negro con un alpha de 0, así que tuve que usar

 [UIColor colorWithWhite:1 alpha:0] 

y funciona bien.

En Swift Esto funcionó para mí,

 UIColor.white.withAlphaComponent(0).cgColor 

Swift 3 Sintaxis,

 UIColor(white: 1, alpha: 0).cgColor 

Vale la pena señalar que cualquier otro color funcionará de esta manera … utilizando una combinación de las dos respuestas anteriores …

C objective

 UIColor *colour = [UIColor networkingColor]; NSArray *colourArray = @[(id)[colour colorWithAlphaComponent:0.0f].CGColor,(id)colour.CGColor] NSArray *locations = @[@0.2,@0.8]; CAGradientLayer *gradientLayer = [CAGradientLayer layer]; gradientLayer.colors = colourArray; gradientLayer.locations = locations; gradientLayer.frame = self.frame; [self.layer addSublayer:gradientLayer]; 

Swift 3

 let colour:UIColor = .networking let colours:[CGColor] = [colour.withAlphaComponent(0.0).cgColor,colour.cgColor] let locations:[NSNumber] = [0.2,0.8] let gradientLayer = CAGradientLayer() gradientLayer.colors = colours gradientLayer.locations = location gradientLayer.frame = frame layer.addSublayer(gradientLayer)