CATiledLayer zu CALayer

9

Ich habe eine Ansicht mit einer CATiledLayer-Unterstützung. Ich möchte die sichtbaren Kacheln aus dieser CATiledLayer-UIView übernehmen und sie einer anderen Ansicht als CALayer-Hintergrund hinzufügen, wodurch das sichtbare Bild in einer anderen UIView neu erstellt wird, die CATiledLayer nicht verwendet.

Der Grund, warum ich dies tun möchte, ist, dass ich diese zweite UIView verwenden werde, um den Effekt der Aktualisierung der CATiledLayer-gestützten UIView zu maskieren - dies erzeugt momentan ein Flimmern, wenn alle Kacheln neu geladen werden.

Das Problem ist, ich bin mir nicht ganz sicher, wie ich das machen würde. Irgendwelche Ideen?

    
Gaz_Edge 18.06.2012, 15:49
quelle

2 Antworten

3
  

CATiledLayer ist eine Unterklasse von CALayer, die eine Möglichkeit bietet   Stellen Sie asynchron möglicherweise Kacheln des Inhalts der Ebene bereit   im Cache auf mehreren Ebenen des Details.

Sie können die sichtbaren Dinge in der Ebene in einen CGContextRef mit:

rendern %Vor%

Und dann verwenden Sie dies, um Ihre andere Ebene zu aktualisieren, indem Sie ihren Delegaten festlegen und das

implementieren %Vor%

ss hier gezeigt Ссылка

Aber ehrlich gesagt finde ich das nicht effizient.

    
Pochi 21.06.2012, 01:59
quelle
0

Dein wirkliches Problem hier ist das Flackern. Ich hatte ein ähnliches Problem in einer Ansicht mit einem benutzerdefinierten CALayer, der es unterstützte, das war Teil der Lösung: Erstellen Sie eine benutzerdefinierte Unterklasse Ihres CALayers und implementieren Sie die folgende Methode:

%Vor%

Das hat eine Reihe von Problemen für mich behoben, aber möglicherweise nicht für Sie behoben. Die Alternative für Sie besteht möglicherweise darin, Transaktionen während der Aktualisierung zu deaktivieren: Aus CATransaction-Klassenreferenz

  

setDisableActions: Legt fest, ob Aktionen ausgelöst durch   Eigenschaftenänderungen, die innerhalb dieser Transaktionsgruppe vorgenommen werden, werden unterdrückt.

Um das zu benutzen:

%Vor%     
quellish 23.06.2012 00:20
quelle