iOS белый на прозрачный слой с градиентом серого цвета


У меня есть CAGradientLayer вставлен в нижней части этого небольшого детального представления, которое появляется в нижней части приложения. Как вы можете видеть, я установил цвета от белого до ясного, но есть этот странный серый оттенок, который появляется. Есть идеи?

    // 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];

вот проблемный вид:

4 61

4 ответа:

clearColor имеет черный цветовой канал с Альфой 0, поэтому мне пришлось использовать

[UIColor colorWithWhite:1 alpha:0]

и он отлично работает.

In Свифт Это сработало для меня,

UIColor.white.withAlphaComponent(0).cgColor

стоит отметить, что любой другой цвет будет работать... используя комбинацию двух ответов выше....

С

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)

Синтаксис Swift 3,

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