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