Hier ist mein Setup: Ich habe einen CALAyer, dem ich Sublayer hinzufügen möchte. Ich erstelle diese Sublayer, indem ich upa UILabel einstelle und dann die UI-Ebenen-Ebene zu meiner Haupt-Ebene hinzufüge. Natürlich bleibt das schwere UILabel-Objekt im Hintergrund. Ist es möglich, die Ebene mit ihrem gesamten Inhalt von einer UIView abzurufen und die UIView selbst loszuwerden? Ich habe bereits versucht, diese:Kann CALayer von UIView kopiert werden?
UILabel* label;
[...]
[mainLayer addSublayer:[label.layer copy]];
[label release];
Aber immer, wenn ich die UIView loslassen, wird der Inhalt der Schicht ebenfalls entfernt. Ist das überhaupt möglich oder benötigt die UIView-Ebene immer den UIView selbst, um den Inhalt anzuzeigen? Ich habe mir die Ebene als eine Art Leinwand vorgestellt, die die UIView malt. Ich glaube, ich könnte mit dieser Annahme falsch liegen :)
Vielleicht, weil der Zweck einer Schicht seiner zugehörigen UIView und seine Unterschichten zu machen. Wenn die UIView verschwindet, weil Sie sie freigeben, warum sollten Sie dann eine Ebene verwenden, die ursprünglich an diese UIView gebunden war? Wenn Sie wirklich eine Ebene benötigen, erscheint es mir logisch, dass Sie auch ihre UIView benötigen.Haentz kann sicherlich versuchen, den Ansatz, den Sie vorgeschlagen haben (und ich bin mir nicht sicher, ob es funktionieren wird), aber ich habe das noch nicht in Core Animation Code gesehen. Wenn Apple darüber nachgedacht hätte, dies zu ermöglichen, hätte es CALayer mit NSCopying kompatibel gemacht. Bitte lassen Sie mich wissen, ob dieser Ansatz funktioniert oder nicht. –
Der einzige Grund, den ich sehen kann, um einen CALayer zu kopieren, ist, wenn er ein Vielfaches derselben Ebene auf dem Bildschirm anzeigen muss. Ich denke, normalerweise würden Sie einfach die mehreren Ebenen erstellen, so wie Sie die erste erstellt haben. Obwohl ich nicht sehe, warum Sie eine Kopie machen würden, wenn Sie beabsichtigten, das erste entweder zu zerstören. Mein Gedanke war, dass er nicht wirklich eine "Kopie" brauchte, da er eine Schicht mit den gleichen Eigenschaften wie das Original brauchte. Du hast Recht, da es wahrscheinlich nicht die akzeptierte Lösung des Problems ist, aber interessant zu sehen, wie es funktioniert. –