2013-08-16 8 views
12

Quindi, ho alcuni UILabels e UITextViews in una cella. Il mio tavolo scorreva un po 'lento e ho provato l'utility "Livelli di fusione dei colori" disponibile nel simulatore iOS e Instruments. Mostra in rosso i livelli che si stanno fondendo e causano lo scorrimento lento.UITextView con sfondo bianco che mostra come strato di colori miscelato in strumenti e simulatore

Tutti gli elementi si stavano fondendo, quindi ho messo uno sfondo bianco sugli UILabels (come la cella) e ora gli UILabel sono ok (avevano ClearColor come sfondo prima).

Ho fatto lo stesso con UITextViews, ho selezionato lo sfondo bianco, ma sono ancora visualizzati sullo schermo come livelli di fusione (colorati in rosso).

Ogni configurazione di UITextView viene eseguita nel builder dell'interfaccia, ho provato con ogni opzione, ma appaiono ancora in rosso.

Che cosa devo fare a UITextViews in modo che i loro livelli non si fondano?

Grazie in anticipo!

PD: Ci dispiace, ma non posso includere cattura

risposta

7

Ebbene, l'UITextView è una vista più avanzato che è scorrevole e supporta la formattazione del testo personalizzato, per cui si potrebbe non essere in grado di farlo 'non si fondono'. Con le altre viste dovresti controllare la casella di controllo opaque, ma dubito che in questo caso funzioni.

La soluzione migliore sarebbe utilizzare invece un UILabel. È possibile sostituirlo con UITextView quando l'utente deve modificare un campo, ma l'utilizzo di UILabel durante lo scorrimento dovrebbe migliorare notevolmente la velocità.

+0

Questo è quello che ho fatto, ho sostituito ogni UITextView con un UILabel e ora le pergamene funzionano bene :) Grazie! – saky

+0

Ma UILabel non supporta gli eventi di tocco dell'URL. –

17

Ero alle prese con questo problema pure. Ho un UITableView che scorreva perfettamente su iPhone ma che tremava come un matto sull'iPad. Ho attivato Color blending layers in Strumenti e, come hai detto, appare opaque = YES; e backgroundColor = [UIColor whiteColor]; non hanno alcun effetto.

Anche Bob è corretto, UILabels è più performante. Tuttavia, la mia implementazione si basa su percorsi di esclusione, che sono disponibili solo in UITextView a causa dello stack TextKit esposto. Non potevo usare UILabel così fuori di disperazione ho provato questo e il rosso sulle mie UITextViews sparito:

for (UIView *subview in textView.subviews) { 
    subview.backgroundColor = theme.post.backgroundColor; 
} 

So che questa è una vecchia questione, ma ho trascorso la maggior parte della giornata debug questo. Spero che altre persone lo trovino utile.

+0

Dove lo metti? –

+1

Questo rimuove il livello misto dalla mia visualizzazione testuale. Ho aggiunto questo ciclo nel mio inizializzatore. –

Problemi correlati