UIColor colorWithPatternImage utilise une seule image
-
05-07-2019 - |
Question
J'essaie de donner à backgroundColor
de tableviewcell
différents avec colorwithPatternImage
et cela ne fonctionne pas comme prévu. La documentation ne dit rien sur le fait de ne pouvoir utiliser qu'un seul motif à la fois.
Disons que j'ai 3 lignes et que je place l'arrière-plan comme suit:
Cell1.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @"red.png"]];
Cell2.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @"green.png"]];
Cell3.backgroundColor = [UIColor colorWithPatternImage: [UIImage imageNamed: @"blue.png"]];
Les 3 lignes seraient rouges. C'est comme s'il y avait une couleur globale qui est retournée.
colorWithPatternImage
renvoie kCGColorSpaceModelPattern 1
pour chaque appel, quelle que soit l'image transmise. S'il était vrai que vous ne disposiez que d'un modèle global à la fois, la couleur devrait être le dernier, en d’autres mots bleu.
Cela n’a aucun sens. Quelqu'un a-t-il une expertise interne de ce qu'Apple fait ici?
MODIFIER J'utilise même un modèle différent dans une vue complètement séparée et cela affecte toujours les modèles de l'autre vue. Je suis convaincu, même si la documentation ne l'indique pas, que vous êtes limité à un motif d'image UIColor à la fois. Triste.
La solution
Pour autant que je sache, cela n’est pas ou plus vrai. J'ai ici quelques UITableViewCells, où chacun a une backgroundImage différente, sans aucun problème.
Autres conseils
Qu'est-ce que Cell1? Où (avec quelle méthode) les mettez-vous?
Je dirais que vous devriez faire tout cela dans
- (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"]];
}