2010-07-02 12 views
6

Sto notando che alcune delle cose che faccio con le immagini nella mia app, potrei fare invece con le proprietà CALayer (cioè bordi, ombre, sfumature e così via). Quindi mi chiedo, in generale, è un'idea migliore usare CALayers e simili, o semplicemente fare tutte quelle cose in Photoshop e usare UIImage (View) s per tutto ciò di cui ho bisogno? Le prestazioni di scorrimento sono state un po 'lente con le ombre e le cose, quindi fondamentalmente sto cercando di trovare ogni piccola ottimizzazione possibile.Prestazioni del CALayer rispetto alle prestazioni di UIImageView

Informazioni di base: In pratica sto semplicemente scorrendo un gruppo di immagini, verticalmente. Un po 'come l'app delle foto. Questo è tutto dal 3.2 in poi, quindi ho accesso a cose come le proprietà shadow e shouldRasterize in CALayer.

risposta

15

Una cosa fondamentale da sapere sulle ombre di CALayer è che, come impostazione predefinita, vengono renderizzate dal canale alfa composto del livello; può essere molto lento, in particolare quando il livello ruota o cambia dimensione. Si dovrebbe guardare nella proprietà shadowPath: se si dà Core Animation una semplice forma, come un rettangolo (UIBezierPath+bezierPathWithRect: con del bounds vi darà [via la sua proprietà CGPath] un CGPathRef è possibile utilizzare lì layer), si vedrà molto prestazioni migliori.

shouldRasterize è anche decisamente utile, in particolare con viste che hanno molte sottoview che non cambiano spesso; assicurati, però, di impostare lo rasterizationScale del livello su [UIScreen mainScreen].scale o di ottenere una brutta pixelizzazione su schermi ad alta risoluzione come l'iPhone 4.

Problemi correlati