Comment personnaliser tableView séparateur dans l'iPhone
Par défaut, il est un seul séparateur de ligne dans uitableview.
Mais je tiens à mettre mon personnalisés en ligne comme séparateur.
Est-il possible? Comment?
Vous devez vous connecter pour publier un commentaire.
Si vous voulez faire plus que le changement de la couleur du séparateur à l'aide de la separatorColor propriété de la UITableView vous pouvez alors régler le separatorStyle propriété UITableViewCellSeparatorStyleNone, et ensuite, soit:
Par exemple, si votre tableau affiche actuellement 5 lignes vous pourriez mettre à jour pour afficher les 9 lignes et les lignes à l'indice 1, 3, 5, 7 serait le séparateur de cellules.
Une meilleure solution est d'utiliser la cellule actuelle de la largeur et de la hauteur. Quelque chose comme ceci:
Si vous avez besoin de différents élément de séparation des couleurs pour les différentes lignes OU vous souhaitez que l'élément de séparation de rester visible lorsque la ligne est mise en surbrillance sur appuyez sur, puis essayez ceci:
Cela suppose que votre cellule de la couleur d'arrière-plan est transparent.
La solution ci-dessus est venu de sortir de nombreuses expérimentations. Voici quelques notes sur mes résultats que je suis sûr qu'ils vont aider les gens:
À la normale “non sélectionné”
Une cellule est sélectionnée, les éléments suivants se produit immédiatement avec tout le matériel d'animation:
Lorsque la cellule est désélectionnée, une animation pour supprimer la surbrillance commence:
Ces réponses suite à la mettre en évidence rect écrasée par le séparateur que vous ajoutez à votre cellule (sur iOS 6 avec mes tests au moins). Vous devez définir le
separatorColor
à[UIColor clearColor]
de sorte que les cellules sont toujours séparés par 1px, vous pouvez dessiner votre séparateur dans le fossé:Vous ajoutez le code suivant
cellForRowAtIndexPath
délégué de la tableView pour créer un affichage de l'image de 1px de hauteur et de 200px de largeur pour everyCellNote: je ne sais pas comment lourd c'est sur la performance.
Je ne sais pas si cela peut être fait "automatiquement" avec certains paramètres. Mais une suggestion serait de définir le séparateur de ligne de car aucun, et dans les frontières de vos cellules réellement dessiner votre séparateur de ligne que vous voulez..
Si vous êtes en utilisant des Cellules en Swift: Une approche alternative est d'étendre UITableViewCell avec une fonction qui permet de dessiner une ligne en haut de la cellule.
Ensuite, vous pouvez ajouter cette ligne pour toute cellule personnalisé, par exemple dans le awakeFromNib
Cette solution est intéressante parce qu'elle ne veut pas gâcher votre storyboard et les limites de votre code supplémentaire pour 1 ligne.
Sur un affichage de la rétine, même le dessin de 0,5 unité de ligne de résultat dans un de deux pixels de la ligne, en raison de l'anti-aliasing. Pour le rendre comme un seul pixel sur les deux écrans, le déplacer jusqu'à un quart de l'unité:
Testé sur iOS 7 (GM):
REMARQUE: il semble que la UITableView se déplace séparateurs de cellules dans certaines configurations, ce qui ferait de ce code ne fonctionnera que si vous descendez dans tous les UITableViewCells ainsi.
_UITableViewCellSeparatorView
nom de la classe que vous utilisez. En outre, vous n'avez même pas accès à la déclaration de classe dans un.h
fichier. Il peut facilement être modifié pour, disons,_UITableViewCellSeparatorView**2**
dans toute version ultérieure sans préavis et cette approche échoue.La cellule dans le résumé ci-dessous est un UITableViewCell sous-classe, où chaque cellule peut avoir son propre séparateur w/beaucoup de styles (actuellement uniquement .Aucun et .Par défaut sont pris en charge).
Il est écrit dans Swift et suppose l'utilisation de la mise en page automatique.
https://gist.github.com/evgeniyd/fa36b6f586a5850bca3f
Comment utiliser la classe:
ensemble UITableView objet du séparateur de style à
UITableViewCellSeparatorStyle.None
Créer une sous-classe de
MPSTableViewCell
awakeFromNib()
ensemble de la cellule séparateur de styleRemarque: le code ci-dessous suppose que la cellule est chargé de xib/storyboard
Si vous utilisez un personnalisé UITableViewCell, Vous pouvez simplement ajouter UIView sur le bas de la UItableViewCell.xib et mettre la couleur de fond la couleur que vous voulez.
Par exemple, sur xib-je ajouter une UIView sur le fond et la hauteur des 1. À l'aide de mise en page automatique, j'ai mis à gauche contrainte à 12, bas contrainte à 0, à droite de contrainte à 0 et la hauteur de la 1.
Swift version: