2010-04-07 18 views
5

Questo non è davvero una domanda perché ho appena risolto il problema, ma penso che la natura del problema è comune per molti sviluppatori di iPhone e la soluzione non era chiaramente evidente così ho voluto condividi la mia esperienza Per mantenere il formato "domanda/risposta" di StackOverflow, inserirò i dettagli nella domanda e la mia soluzione nella risposta.UITableView prestazioni scorrimento con CALayer + maschera

Dettagli:

ho avuto un Tableview pieno di cellule con due etichette e un controllo di interruttore a levetta personalizzato ho messo insieme da zero. Se nascondo il controllo di attivazione, la vista del tavolo scorre come un campione. Tuttavia, con il controllo toggle mostrato, lo scorrimento era dolorosamente lento/lento sull'iPhone 3G. Le mie celle tableview non hanno componenti trasparenti (tranne la maschera per il livello) e sto riutilizzando le celle.

Il controllo di attivazione personalizzato estende UIButton e il suo livello ha due componenti: una UIImageView che contiene la parte "interruttore" scorrevole del cavicchio e un'ellisse allungata utilizzata come maschera, con uno sfondo disegnato dietro il livello in -drawRect: .

Come ho risolto? Risposta in arrivo a breve ...

risposta

6

Ho scoperto che la fonte della lentezza/smarrimento derivava dal dover ricomporre il livello con il sottolivello della maschera sullo scorrimento. Credo che sia stato necessario ridisegnare l'interruttore a levetta ogni volta che lo schermo è stato ridisegnato.

mia soluzione è quella di nascondere l'interruttore strato/maschera meno che non sia stato cambiando. Quando è completamente inserito nelle posizioni on o off, nascondo il livello dell'interruttore a levetta e lo sostituisco con un'immagine dell'interruttore a levetta. Quando l'utente tocca l'interruttore, l'immagine fittizia si nasconde, il componente del toggleswitch effettivo mostra e fa l'animazione allo stato opposto. Al termine dell'animazione, nascondo il componente interruttore a levetta e mostro l'immagine fittizia, assicurandoti di cambiare l'immagine allo stato corrente. Questa prestazione di scorrimento migliorata SIGNIFICANTLY ... oserei dire che è quasi buono come una cellview tableview nativa predefinita.

Problemi correlati