2010-05-26 12 views
8

Sto sperimentando l'uso di cagradientlayer per disegnare gradienti nella nostra app invece di avere una sottoclasse di uiview per gestire i gradienti. Uno snafu che ho trovato è che quando la vista che ha il gradiente come sottostrato del suo livello principale viene ridimensionata per adattarsi ai dati che sto cercando di mostrare, il livello non viene ridimensionato con esso. Finisco per avere il gradiente di livello alla dimensione del fotogramma originale mentre il fotogramma della mia vista è molto più grande.come faccio a ridimensionare automaticamente il fotogramma di un livello in base al fotogramma del superlayer o al suo riquadro della vista?

C'è un modo per autorizzare il sottolista a montare il frame del superlayer o il frame della vista del superlayer?

risposta

9

Implementare layoutSubviews nella sottoclasse della visualizzazione. Viene chiamato quando il frame viene ridimensionato (o quando viene chiamato setNeedsLayout). Basta impostare cornice del livello per i limiti della vista:

-(void)layoutSubviews 
{ 
    someSubview.frame = self.bounds; // make the subview frame match its view 
} 
+0

spero di non avere bisogno di una sottoclasse a tutti, ma alcune funzionalità che può esistere in CALayers che ho non riesco a trovare quello che farebbe questo per me (la sottoclasse di un livello non è fuori questione però). – Kevlar

+0

Come stai ridimensionando la vista? Ridimensiono le visualizzazioni impostando la cornice e non ho mai dovuto ridimensionare i livelli. – progrmr

+0

in alcuni casi sto impostando la cornice e autorizzando la vista in altri. Penso che il problema potrebbe essere che quando ridimensiono le viste manualmente spengo l'autoresizing delle sottoview in modo che le sottoview non vengano ridimensionate; quello potrebbe essere il mio problema – Kevlar

2

questo funzionerà ancora meglio

-(void)viewWillLayoutSubviews 
+1

Meglio di cosa? E perché? Assicurati di fornire risposte complete. –

+0

Meglio in quanto farà effettivamente ciò che è inteso qui, penso. – GregJaskiewicz

+0

Al momento in cui ho posto questa domanda, non penso che UIViewController avesse quel metodo. Sono d'accordo sul fatto che se le tue visualizzazioni sono viste di magazzino gestite da un controllore uiview, vorresti farlo al posto di layoutSubviews in una sottoclasse UIView. – Kevlar

Problemi correlati