2014-07-22 8 views
48

Ho un CAGradientLayer inserito nella parte inferiore di questa piccola vista di dettaglio che si apre nella parte inferiore dell'app. Come puoi vedere, ho impostato i colori dal bianco al chiaro, ma c'è questa strana sfumatura grigia che viene mostrata. Qualche idea?Il gradiente iOS da bianco a trasparente è grigio

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

Ecco la vista problematico:

Here is the problematic view

+0

Cosa c'è sotto lo strato? – trojanfoe

+0

MapView. Posso impostare il livello per usare clearColor e clearColor e sarà completamente trasparente. –

+0

Quello che sto cercando di ottenere: il livello sotto questo livello è grigio? – trojanfoe

risposta

123

clearColor ha un canale di colore nero con un alfa pari a 0, così ho dovuto usare

[UIColor colorWithWhite:1 alpha:0] 

e funziona benissimo .

+0

Grande, ha funzionato per me. Grazie – Rifinio

+11

Sostituisce l'ombra nera con un'ombra bianca. Ancora non trasparente – RealNmae

25

In Swift Questo ha funzionato per me,

UIColor.white.withAlphaComponent(0).cgColor 
+0

wow, fantastico! grazie mille!!! –

10

pena sottolineare che qualsiasi altro colore funzionerà come questo ... usando una combinazione delle due risposte di cui sopra ....

Objective C

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 = location 
gradientLayer.frame = frame 

layer.addSublayer(gradientLayer) 
9

Swift 3 Syntax,

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