2013-05-25 7 views
7

Ich verstehe nicht, wie Sie einen Schatten entfernen, der zu einer Ansicht hinzugefügt wurde. füge ich in initWithFrame einen Schatten auf diese Weise meiner Sicht:iOS Hinzufügen/Entfernen von Schatten aus einer Ansicht

self.layer.borderWidth = 2; 
self.layer.borderColor = [UIColor clearColor].CGColor; 
self.backgroundColor = [UIColor greenColor]; 
[self.layer setCornerRadius:8.0f]; 
CALayer *layer = self.layer; 
layer.shadowOffset = CGSizeMake(2, 2); 
layer.shadowColor = [[UIColor blackColor] CGColor]; 
layer.cornerRadius = 8.0f; 
layer.shadowRadius = 3.0f; 
layer.shadowOpacity = 0.80f; 
layer.shadowPath = [[UIBezierPath bezierPathWithRect:layer.bounds] CGPath]; 

Nachdem in der Ausführung der App ich den Schatten von dieser Ansicht entfernen möchten. Ich habe versucht mit:

layer.hidden = YES; 

oder

self.layer.hidden = YES; 

aber versteckt die Ansicht vollständig, nicht nur den zusätzlichen Schatten.

Gibt es eine Möglichkeit, den hinzugefügten Schatten aus einer Ansicht abzurufen und dann zu verbergen? Danke!

+2

Gibt es einen Grund Sie deklarieren eine lokale 'layer'-Variable, die auf' self.layer' in der Mitte Ihres Codes zeigt? –

+0

Ich lese, dass aus Gründen der Leistung besser sein könnte, deklarieren Sie einen ShadowPath mit UIBezierPath, nicht wahr? gibt es eine Best Practice dafür? –

Antwort

17

Ich denke, Sie könnten die shadowOpacity Eigenschaft Ihrer CALayer verwenden.

dies sollte also funktionieren:

self.layer.shadowOpacity = 0.0; 

die CALayer's shadowOpacity documentation page

Siehe Und Ihren Schatten Gebrauch zu zeigen:

self.layer.shadowOpacity = 1.0; 
+0

Danke sehr nützlich, ich denke nicht über diese Option, aber könnte sich auf die Leistung ändern dieses Eigenschaft Ziel dann versuchen, definitiv zu entfernen? –

6

Sorry, nicht sicher, ob den richtigen Weg, aber haben Sie versucht, die Eigenschaften der layer shadow zu ändern? Zum Beispiel einer von diesen;

layer.shadowOffset = CGSizeMake(0, 0); 
layer.shadowColor = [[UIColor clearColor] CGColor]; 
layer.cornerRadius = 0.0f; 
layer.shadowRadius = 0.0f; 
layer.shadowOpacity = 0.00f; 
0

die „Schicht“, die Sie versteckt zu machen versuchen, ist die Schicht des Objekts, das Sie einen Schatten auf sie haben nicht ein sichtbarer Aspekt .. nur die Objekte mit in der Schicht ... es ist eher verwirrend, um zu konzeptualisieren, ist der einzige Weg, um den Schatten zu entfernen ist, was Sie ursprünglich getan, was oben vorgeschlagen wurde, gibt es keine definierte Eigenschaft, die Sie einfach umschalten können und den Schatten weggehen

Verwandte Themen