UIColor colorWithPatternImage utilizza solo un'immagine
-
05-07-2019 - |
Domanda
Sto provando a fornire i tableviewcell
diversi backgroundColor
con colorwithPatternImage
e non funziona come previsto. La documentazione non dice nulla sulla possibilità di utilizzare solo un modello alla volta.
Dire che ho 3 righe e ho impostato lo sfondo in questo modo:
Cell1.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @"red.png"]];
Cell2.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @"green.png"]];
Cell3.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @"blue.png"]];
Tutte e 3 le righe sarebbero rosse. È come se ci fosse del colore globale che viene restituito.
colorWithPatternImage
restituisce kCGColorSpaceModelPattern 1
per ogni chiamata, indipendentemente dall'immagine trasmessa. Se fosse vero che hai solo 1 modello globale alla volta, allora il colore dovrebbe essere l'ultimo set, in altre parole blu.
Questo non ha senso. Qualcuno ha qualche esperienza interna su ciò che Apple sta facendo qui?
Modifica Uso anche uno schema diverso in una vista completamente separata e influenza comunque gli schemi dell'altra vista. Sono convinto, sebbene la documentazione non lo affermi, che sei limitato a un modello di immagine UIColor alla volta. Triste.
Soluzione
Per quanto posso vedere questo non è o non è più vero. Ho qui un paio di UITableViewCells, in cui ognuno ha uno sfondo diverso, senza problemi.
Altri suggerimenti
Che cos'è Cell1? Dove (in quale metodo) li stai impostando?
Direi che dovresti fare tutto questo in
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"Cell";
MyTableCell *cell = (MyTableCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
// create cell
}
// Set up the cell...
// set up a background color
if (something)
cell.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @"red.png"]];
else (another)
cell.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @"green.png"]];
else
cell.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @"blue.png"]];
}