Je voudrais personnaliser l'arrière-plan (et peut-être la bordure aussi) de toutes les UITableViewCells dans mon UITableView. Jusqu'à présent, je n'ai pas été en mesure de personnaliser ce truc, j'ai donc un tas de cellules de fond blanc qui est la valeur par défaut.
Existe-t-il un moyen de le faire avec le SDK iPhone?
UITableViewCellAccessoryCheckmark
, par exemple? Merci.cell.textLabel.backgroundColor = [UIColor clearColor];
Voici le moyen le plus efficace que j'ai rencontré pour résoudre ce problème, utilisez la méthode de délégation willDisplayCell (cela prend également en charge la couleur blanche pour l'arrière-plan de l'étiquette de texte lorsque vous utilisez cell.textLabel.text et / ou cell.detailTextLabel.text ):
Lorsque cette méthode déléguée est appelée, la couleur de la cellule est contrôlée via la cellule plutôt que la vue tableau, comme lorsque vous utilisez:
Ainsi, dans le corps de la méthode de délégué de cellule, ajoutez le code suivant pour alterner les couleurs des cellules ou utilisez simplement l'appel de fonction pour que toutes les cellules du tableau aient la même couleur.
Cette solution a bien fonctionné dans ma situation ...
la source
cell.backgroundColor = UIColor.clearColor
C'est vraiment simple, puisque OS 3.0 définit simplement la couleur d'arrière-plan de la cellule dans la méthode willDisplayCell. Vous ne devez pas définir la couleur dans le cellForRowAtIndexPath.
Cela fonctionne à la fois pour le style simple et groupé:
Code:
PS: Voici l'extrait de documentation de willDisplayCell:
J'ai trouvé ces informations dans ce post de colionel . Merci!
la source
La meilleure approche que j'ai trouvée jusqu'à présent consiste à définir une vue d'arrière-plan de la cellule et un arrière-plan clair des sous-vues de cellule. Bien sûr, cela a fière allure sur les tables avec un style indexé uniquement, avec ou sans accessoires.
Voici un exemple où l'arrière-plan de la cellule est haleté en jaune:
la source
Mettez simplement ceci dans votre fichier de classe délégué UITableView (.m):
la source
Je suis d'accord avec Seba, j'ai essayé de définir ma couleur de ligne alternée dans la méthode de délégué rowForIndexPath mais obtenais des résultats incohérents entre 3.2 et 4.2. Ce qui suit a très bien fonctionné pour moi.
la source
Après avoir essayé toutes les différentes solutions, la méthode suivante est la plus élégante. Modifiez la couleur dans la méthode de délégué suivante:
la source
vlado.grigorov a quelques bons conseils - le meilleur moyen est de créer un backgroundView et de lui donner une couleur, en définissant tout le reste sur clearColor. De plus, je pense que c'est le seul moyen d'effacer correctement la couleur (essayez son échantillon - mais définissez «clearColor» au lieu de «yellowColor»), ce que j'essayais de faire.
la source
La personnalisation de l'arrière-plan d'une cellule de vue de tableau devient finalement une approche «tout ou rien». Il est très difficile de changer la couleur ou l'image utilisée pour l'arrière-plan d'une cellule de contenu d'une manière qui ne semble pas étrange.
La raison en est que la cellule couvre en fait la largeur de la vue. Les coins arrondis font simplement partie de son style de dessin et la vue du contenu se trouve dans cette zone.
Si vous changez la couleur de la cellule de contenu, vous vous retrouverez avec des bits blancs visibles dans les coins. Si vous changez la couleur de la cellule entière, vous aurez un bloc de couleur couvrant la largeur de la vue.
Vous pouvez certainement personnaliser une cellule, mais ce n'est pas aussi facile que vous ne le pensez au début.
la source
Créez une vue et définissez-la comme vue d'arrière-plan de la cellule
la source
Pour prolonger la réponse de N.Berendt - Si vous souhaitez définir la couleur de cellule en fonction d'un état dans l'objet de données de cellule réel, au moment où vous configurez le reste des informations pour la cellule du tableau, ce qui est généralement lorsque vous êtes dans le cellForRowAtIndexPath, vous pouvez le faire en remplaçant la méthode willDisplayCell pour définir la couleur d'arrière-plan de la cellule à partir de la couleur d'arrière-plan de la vue du contenu - cela permet de contourner le problème des arrière-plans du bouton de divulgation, etc. où vous effectuez toutes vos autres personnalisations de cellules.
Donc: si vous ajoutez cette méthode à votre délégué de vue table:
Ensuite, dans votre méthode cellForRowAtIndexPath, vous pouvez faire:
Cela évite d'avoir à récupérer à nouveau vos objets de données dans la méthode willDisplayCell et vous évite également d'avoir deux endroits où vous pouvez personnaliser / personnaliser votre cellule de tableau - toute la personnalisation peut aller dans la méthode cellForRowAtIndexPath.
la source
Créez une image à utiliser comme arrière-plan avec Photoshop ou gimp et nommez-la myimage. Ensuite, ajoutez cette méthode à votre classe tableViewController:
Cela fonctionnera également si vous avez défini UITableView sur personnalisé dans l'inspecteur d'attributs.
la source
Ma solution consiste à ajouter le code suivant à l'événement cellForRowAtIndexPath:
Fonctionne en toutes circonstances, même avec des boutons de divulgation, et il est préférable pour votre logique d'agir sur l'état de couleur des cellules dans cellForRowAtIndexPath que dans l'événement cellWillShow, je pense.
la source
Sous-classe UITableViewCell et ajoutez ceci dans l'implémentation:
la source
la source
Cela fonctionnera dans le dernier Xcode.
la source
Essaye ça:
la source