J'ai une cellule de tableau qui affiche l'image d'un utilisateur, son nom et un peu de texte. L'image de l'utilisateur fait 50x50, mais je veux une bordure autour d'elle, alors je règle la vue pour centrer l'image et je règle le cadre sur 52x52, puis je règle la couleur d'arrière-plan de cette vue sur la couleur de ma bordure. Une bordure de 1 pixel apparaît alors autour de l'image.
Je souhaite également afficher une bordure de 30 pixels de large à droite de la cellule lorsque celle-ci est sélectionnée. J'ai essayé de le faire en créant une UIView de la taille du cadre de la cellule, puis en ajoutant une sous-vue à cette vue avec une UIView de la largeur et de la couleur d'arrière-plan souhaitées. J'ai ensuite défini cette vue comme étant la selectedBackgroundView de la cellule.
Le problème est que le selectedBackgroundView de la cellule est appliqué à l'arrière-plan de tous les points de vue à l'intérieur de la cellule. Ainsi, lorsque je sélectionne une cellule, la "bordure" de l'image prend la couleur d'arrière-plan de la cellule sélectionnée, et l'autre "bordure" de 30 px que j'ajoute prend également cette couleur d'arrière-plan.
Code à l'intérieur de ma celluleForRowAtIndexPath :
cell = (UserCellView *) currentObject;
UIView *c = [[UIView alloc ] initWithFrame:CGRectMake(0, 0, 30, cell.frame.size.height)];
c.backgroundColor = [[UIColor alloc] initWithRed:64/255.0 green:64/255.0 blue:64/255.0 alpha:1.0];
UIView *v = [[UIView alloc ] initWithFrame:cell.frame];
v.backgroundColor = [[UIColor alloc] initWithRed:35/255.0 green:35/255.0 blue:35/255.0 alpha:1.0];
[v addSubview:c];
cell.selectedBackgroundView = v;
[c release];
[v release];