color ios iphone uiview calayer cagradientlayer

color - La capa de degradado de blanco a transparente de iOS es gris



gradient view swift 4 (4)

Tengo un CAGradientLayer insertado en la parte inferior de esta pequeña vista de detalles que aparece en la parte inferior de la aplicación. Como puede ver, configuré los colores del blanco al claro, pero aparece este extraño tinte gris. ¿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:


En Swift Esto funcionó para mí,

UIColor.white.withAlphaComponent(0).cgColor


Sintaxis de Swift 3,

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


Vale la pena señalar que cualquier otro color funcionará así ... usando una combinación de las dos respuestas anteriores ....

C objetivo

UIColor *colour = [UIColor redColor]; 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 = .red 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 = locations gradientLayer.frame = frame layer.addSublayer(gradientLayer)


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

[UIColor colorWithWhite:1 alpha:0]

y funciona bien