2014-07-22 6 views
48

Ich habe eine CAGradientLayer an den unteren Rand dieser kleinen Detailansicht eingefügt, die am unteren Rand der App erscheint. Wie Sie sehen können, habe ich die Farben von weiß bis klar eingestellt, aber da ist diese seltsame graue Tönung, die auftaucht. Irgendwelche Ideen? HieriOS Weiß bis Transparent Gradient Layer ist Grau

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

ist die problematische Ansicht:

Here is the problematic view

+0

Was ist unter der Schicht? – trojanfoe

+0

Die MapView. Ich kann den Layer so einstellen, dass er clearColor und clearColor verwendet und vollständig transparent ist. –

+0

Worauf ich hinaus will: Ist die Ebene unter dieser Ebene grau? – trojanfoe

Antwort

123

Clear hat einen schwarzen Farbkanal mit einem Alpha von 0, also musste ich

[UIColor colorWithWhite:1 alpha:0] 

verwenden und es funktioniert gut .

+0

Großartig, arbeitete für mich. Danke – Rifinio

+11

Es ersetzt schwarzen Schatten mit weißem Schatten. Immer noch nicht transparent – RealNmae

25

In Swift Das ist für mich gearbeitet,

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

wow, großartig! ich danke dir sehr!!! –

10

erwähnenswert, dass jede andere Farbe wird so arbeiten ... mit einer Kombination der beiden Antworten oben ....

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 
Verwandte Themen