2012-02-16 14 views
5

Ho alcune belle UIViews personalizzate che usano CALayer per alcune maschere e trasparenze abbastanza elaborate. Mi ci è voluto un po 'per capire come farlo funzionare senza intoppi, ma ho trovato che avvolgendo oggetti rilevanti in un UIView del contenitore e impostando il layer del contenitore.shouldRasterizza su YES, ma lascia quella proprietà di tutte le viste contenute impostate su NO , funzionerà liscio ma non importa quanto elaborato possa essere il tuo mix.Il CALayer perde la rasterizzazione quando viene spostato fuori schermo in un UIScrollView

E 'fondamentalmente come questo:

UIScrollView


Container Vista (layer.shouldRasterize = YES)

  • bambino (layer.shouldRasterize = NO)
    • childOfChild (layer.shouldRasterize = NO)
  • bambino (layer.shouldRasterize = NO)
  • bambino (layer.shouldRasterize = NO)

Container ...

Container ... (e così via)


Fondamentalmente, il contenitore termina come una grande immagine di blocco quando rasterizza, riducendo al minimo la quantità di rasterizzazione che deve essere eseguita. Tuttavia, questo ha creato un nuovo problema per me. Se ho diversi contenitori in un UIScrollView, non appena uno dei contenitori viene scostato fuori dallo schermo, viene contrassegnato con "Rosso" nel profiler CoreAnimation e, pertanto, deve essere nuovamente sottoposto a rendering quando viene fatto scorrere indietro sullo schermo. Ciò causa una breve balbuzie. Non capisco perché il livello del contenitore debba rasterizzare tutto da capo. Qualcuno può spiegare questo o forse fornire una soluzione alternativa? Grazie.

risposta

Problemi correlati