Was ist der beste Weg, um einen CALayer (ohne Animation) zu verstecken?

8

Ich habe eine Reihe von CALayern im Vollbildmodus als Teil einer einzigen UIView. Abhängig davon, wie der Benutzer mit der Ansicht interagiert, muss ich eine Ebene anzeigen und alle anderen verbergen. Ich mache das gerade, indem ich die Opazität ändere, d. H.

Auszuschließende Ebene: [layer setOpacity: 0]; Zu zeigende Ebene: [layer setOpacity: 1];

Aus einem Grund, den ich nicht ganz verstehe, scheint dies einen blinkenden Effekt auf dem Bildschirm zu erzeugen. Teilweise, um dies zu vermeiden, aber auch, weil ich den Eindruck habe, dass Änderungen der Deckkraft Performances beeinflussen können, frage ich mich, ob eine Änderung der Deckkraft der beste Weg ist, CALayers zu verstecken und / oder anzuzeigen, z. sollte ich in Erwägung ziehen, die zPosition zu ändern oder ihre Position zu ändern, sodass sie nicht mehr auf dem Bildschirm erscheint.

Ich möchte den Übergang übrigens nicht animieren.

Vielen Dank im Voraus für Hinweise oder Hilfe.

    
pingin 10.08.2013, 23:01
quelle

2 Antworten

21

Der normale Weg zum Ausblenden eines Layers ist das Setzen seiner hidden -Eigenschaft auf YES , aber es ist kein Nachteil, seine opacity auf 0.0 zu setzen, um das zu erreichen, was von Ihrem Nutzungsszenario abhängt.
Wenn Ihr CALayer nicht der zugrunde liegende Layer von UIView ist (die Eigenschaft UIView der layer -Instanz), ändern Sie die Eigenschaften opacity oder hidden standardmäßig, um die Animation auszulösen. Um dies zu verhindern, fügen Sie diesen Code hinzu, bevor Sie diese Eigenschaften ändern:

%Vor%     
liuyaodong 11.08.2013, 01:54
quelle
5

CALayer hat eine Eigenschaft namens "hidden", versuchen Sie dies auf YES und NO zu setzen, anstatt die Opazität zu wechseln.

Auszuschließende Ebene: [layer setHidden: YES];

Ebene zum Anzeigen: [layer setHidden: NO];

Hoffe das hilft dir.

    
TomWildcat 11.08.2013 00:41
quelle

Tags und Links