Je voudrais personnaliser à la fois l'arrière-plan et la couleur de la bordure d'un UITableView de style groupé.
J'ai pu personnaliser la couleur d'arrière-plan en utilisant les éléments suivants:
tableView.contentView.backgroundColor = [UIColor greenColor];
Mais la couleur de la bordure est toujours quelque chose que je ne sais pas changer.
Comment personnaliser ces deux aspects de la vue de tableau de style groupé?
Réponses:
MISE À JOUR: dans iPhone OS 3.0 et les versions ultérieures ont
UITableViewCell
maintenant unebackgroundColor
propriété qui rend cela vraiment facile (surtout en combinaison avec l'[UIColor colorWithPatternImage:]
initialiseur). Mais je laisserai ici la version 2.0 de la réponse à tous ceux qui en ont besoin…C'est plus difficile qu'il ne devrait l'être. Voici comment j'ai fait cela quand je devais le faire:
Vous devez définir la propriété backgroundView de UITableViewCell sur un UIView personnalisé qui dessine la bordure et l'arrière-plan lui-même dans les couleurs appropriées. Cette vue doit pouvoir dessiner les bordures dans 4 modes différents, arrondis en haut pour la première cellule d'une section, arrondis en bas pour la dernière cellule d'une section, pas de coins arrondis pour les cellules au milieu d'une section et arrondi aux 4 coins pour les sections contenant une cellule.
Malheureusement, je ne pouvais pas comprendre comment définir automatiquement ce mode, j'ai donc dû le définir dans la méthode -cellForRowAtIndexPath de UITableViewDataSource.
C'est un vrai PITA mais j'ai confirmé avec les ingénieurs Apple que c'est actuellement le seul moyen.
Mise à jour Voici le code de cette vue bg personnalisée. Il y a un bug de dessin qui rend les coins arrondis un peu amusants, mais nous sommes passés à un design différent et avons mis au rebut les arrière-plans personnalisés avant que j'aie eu la chance de le réparer. Cela vous sera probablement très utile:
la source
Je sais que les réponses concernent la modification des cellules de tableau groupées, mais au cas où quelqu'un voudrait également changer la couleur d'arrière-plan de la vue du tableau:
Vous devez non seulement définir:
Vous devez également modifier ou supprimer la vue d'arrière-plan:
la source
Tout d'abord merci pour ce code. J'ai apporté quelques modifications au dessin dans cette fonction pour supprimer le problème de coin du dessin.
la source
Merci pour le code, c'est exactement ce que je cherchais. J'ai également ajouté le code suivant au code de Vimal, pour implémenter le cas d'une cellule CustomCellBackgroundViewPositionSingle. (Les quatre coins sont arrondis.)
la source
Une chose que j'ai rencontrée avec le code CustomCellBackgroundView ci-dessus de Mike Akers qui pourrait être utile à d'autres:
cell.backgroundView
ne se redessine pas automatiquement lorsque les cellules sont réutilisées et les modifications apportées à la position var de backgroundView n'affectent pas les cellules réutilisées. Cela signifie que les tables longues seront mal dessinéescell.backgroundViews
compte tenu de leurs positions.Pour résoudre ce problème sans avoir à créer un nouveau backgroundView à chaque fois qu'une ligne est affichée, appelez
[cell.backgroundView setNeedsDisplay]
à la fin de votre-[UITableViewController tableView:cellForRowAtIndexPath:]
. Ou pour une solution plus réutilisable, remplacez le paramètre de position de CustomCellBackgroundView pour inclure un[self setNeedsDisplay]
.la source
Merci pour cet article très utile. Au cas où quelqu'un (comme moi!) Voudrait simplement avoir un arrière-plan de cellule complètement vide au lieu de le personnaliser via des images / du texte / autre contenu dans IB et ne peut pas comprendre comment se débarrasser de la bordure / du rembourrage stupide background même si vous l'avez défini sur clear dans IB ... voici le code que j'ai utilisé qui a fait l'affaire!
J'espère que cela aidera quelqu'un d'autre! Semble fonctionner comme un charme.
la source
cell.backgroundView
.Un grand merci à tous ceux qui ont posté leur code. Ceci est très utile.
J'ai dérivé une solution similaire pour changer la couleur de surbrillance pour les cellules de vue de tableau groupées. Fondamentalement, le selectedBackgroundView de UITableViewCell (pas le backgroundView). Ce qui, même sur iPhone OS 3.0, a encore besoin de cette solution PITA, pour autant que je sache ...
Le code ci-dessous présente les modifications pour rendre la surbrillance avec un dégradé au lieu d'une couleur unie. Le rendu de la bordure est également supprimé. Prendre plaisir.
la source
Vous pouvez personnaliser la couleur de la bordure en définissant
la source
Pour modifier la couleur de la bordure de la vue tableau:
In.h:
Dans M:
la source
Cette tâche peut être facilement effectuée à l'aide de PrettyKit en ajoutant environ 5 lignes de code. Si vous utilisez des
nib
fichiers oustoryboard
, n'oubliez pas non plus d'appliquer ce petit hack . Lorsque vous utilisez cette approche, vous devez sous-classer votre cellule dePrettyTableViewCell
:Ceci est un exemple de mon
cellForRowAtIndexPath
:la source
J'ai eu des problèmes avec cela et j'ai essayé beaucoup de combinaisons de choses car j'ai remarqué que pour certaines cellules, cela fonctionnait bien mais pas pour d'autres.
Étrangement, j'ai découvert qu'il est possible de définir le cell.backgroundColor sur lightGrayColor et que tout fonctionne parfaitement - mais blueColor m'a causé des problèmes de ne pas mettre à jour les bords extérieurs.
À moins qu'il ne soit vraiment important d'utiliser le vert - vous voudrez peut-être essayer ceci. Il se peut qu'il s'agisse d'une fonctionnalité permettant aux utilisateurs d'utiliser uniquement des couleurs grises lorsqu'ils indiquent qu'une cellule est sélectionnée.
la source