Wie bekomme ich den Rahmen eines Layers automatisch auf der Grundlage des Rahmens oder der Ansicht des Superlayers?

8

Ich experimentiere mit der Verwendung von cagradientlayer, um Gradienten in unserer App zu zeichnen, anstatt eine Unterklasse von uiview zu haben, die Gradienten verwaltet. Ein Snafu, das ich gesehen habe, ist, dass wenn die Ansicht, die den Farbverlauf als Sublayer der Haupt-Ebene hat, an die Daten angepasst wird, die ich zeigen möchte, wird die Größe der Ebene nicht mit geändert. Ich habe am Ende die Farbverlaufsschicht mit der ursprünglichen Bildgröße, während der Rahmen meiner Ansicht viel größer ist.

Gibt es eine Möglichkeit, den Sublayer automatisch so zu skalieren, dass er in den Frame des Superlayers oder in den Frame der Superlayer-Ansicht passt?

    
Kevlar 26.05.2010, 17:06
quelle

2 Antworten

9

Implementieren Sie layoutSubviews in der Unterklasse Ihrer Ansicht. Es wird aufgerufen, wenn die Größe des Rahmens geändert wird (oder wenn setNeedsLayout aufgerufen wird). Setzen Sie den Rahmen der Ebene auf die Grenzen der Ansicht:

%Vor%     
progrmr 26.05.2010, 17:36
quelle
2

Dies wird noch besser funktionieren

%Vor%     
GregJaskiewicz 17.10.2012 19:11
quelle