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 ответа:
clearColor имеет черный цветовой канал с Альфой 0, поэтому мне пришлось использовать
[UIColor colorWithWhite:1 alpha:0]
и он отлично работает.
стоит отметить, что любой другой цвет будет работать... используя комбинацию двух ответов выше....
С
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)