2016-01-13 13 views
6

Potrei ottenere voti negativi per questa domanda ma sono curioso e non ho trovato alcuna spiegazione. Quindi lo posterò qui.UIImageView setImage o setBackgroundColor, quale è meglio in iOS

La mia domanda è, devo mostrare l'immagine del separatore personalizzato nella mia cella personalizzata. Se ho semplicemente impostato il colore di sfondo di imageView, anziché impostare UIImage, è un approccio migliore?

Ecco lo screenshot di esempio per spiegare la mia domanda.

enter image description here

In questa immagine, ho separatori nero e grigio.

[barImage setBackgroundColor:[UIColor blackColor]]; 
[greyBarImage setBackgroundColor:[UIColor greyColor]]; 

O

[barImage setImage:[UIImage imageNamed:@"black.png"]]; 
[greyBarImage setImage:[UIImage imageNamed:@"grey.png"]]; 

Ora, quale è meglio? Tutto quello che so è che lo imageNamed: è un po 'più lento e dovremmo evitare, ma non ne sono sicuro.

EDIT:

Questo è quello che so dopo la pubblicazione questa domanda:

Impostazione Image:

  • costerà la RAM
  • immagine non copre l'intero ImageView , quindi potrebbero esserci porzioni non opache su UIImageView
colore di sfondo

Ambito:

  • Questo è un overhead sulla CPU, ma diminuirà la memoria app.
  • Il colore di sfondo coprirà l'intero UIImageView, quindi l'intero imageView sarà opaco e risponderà ai tocchi.
+9

Se si sta solo impostando il colore di sfondo, sarebbe meglio usare 'UIView' invece di' UIImageView'. –

+0

@AlexanderPerechnev Puoi spiegare perché UIView sarà migliore invece di UIImageView, non lo so per questo voglio sapere. –

+3

@DharmbirSingh perché 'UIView' è più semplice di' UIImageView' nella sua implementazione, quindi richiede meno tempo per disegnare. Ciò significa che se sei pazzo delle prestazioni del codice (come il questionario), la scelta è ovvia. –

risposta

6

Se sia la soluzione funziona per voi il colore dello sfondo impostazione sarebbe meglio di impostazione immagine

[barImage setBackgroundColor:[UIColor blackColor]]; 
[greyBarImage setBackgroundColor:[UIColor greyColor]]; 

quanto ciò

1.Save le risorse app (immagine).

2. Evitare il problema di caricamento dell'immagine di runtime (in caso di sostituzione del nome).

prega di fare riferimento Simple drawing app e Image drawing app.

+2

Ma perché usare una visualizzazione di immagini del tutto se non ci sono immagini? – rmaddy

+0

Sono d'accordo con te, ma ciò aumenterà l'utilizzo della CPU per l'impostazione del colore di sfondo. Tuttavia, dobbiamo sopportare un sovraccarico, una RAM o una CPU. – iBug

+1

@AvijitNagare ci dovrebbe essere una dimostrazione che mostra che le linee di disegno sono molto più veloci quindi raccogliendo un'immagine. –

0

per impostare il colore separatore personalizzato sulla cella Tableview, è possibile specificare semplicemente il colore del separatore desiderato

[tableView setSeparatorColor:[UIColor grayColor]]; 

Incase se si desidera mostrare colori alternati aggiungere la dichiarazione di cui sopra in

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 

metodo e differenziare utilizzando il parametro indexPath.

+0

'[tableView setSeparatorColor: [UIColor grayColor]];' questo non funzionerà con il separatore personalizzato. – iBug

1

Cambiare colore di sfondo sarebbe meglio perché: -

  1. Ci vorrà meno memoria come confrontare per caricare un'immagine.
  2. Se si intende impostare l'immagine in quel caso, il codice sarà runtime mentre si sta usando solo il colore in quel caso il codice sarà in fase di compilazione.
  3. Sarà più veloce confrontare per caricare l'immagine. Si può vedere ad esempio dal vivo nelle immagini riportate: -

Se abbiamo intenzione di cambiare solo il colore di sfondo è più veloce e prendere meno memoria

enter image description here

enter image description here

O sarebbe molto meglio se hai intenzione di cambiare solo il colore di sfondo in quel caso devi usare UIView invece di UIImageView.

1

Una modifica specifica che l'utente finale può vedere è che se la cella può essere selezionata/evidenziata, se si utilizza un colore di sfondo, la vista separatore perderà lo sfondo quando selezionata.

Se si utilizza un'immagine tale vista manterrà lo stesso aspetto & sensazione quando viene toccato.

Se ti interessa, vai per l'immagine, in caso contrario, scegli il colore di sfondo, è più facile da capire, modificare e probabilmente consuma meno risorse (a seconda della tua immagine).