Comment puis-je régler UITableViewCellSelectionStyle propriété pour certaines couleurs personnalisées?
Je développe une application iPhone, dans ma table, je voulais de la couleur personnalisée pour la Cellule de Sélection de Style, j'ai lu le UITableViewCell Classe de Référence mais il y a seulement trois constantes définies pour la Sélection de style (Bleu, Gris, Aucune). J'ai vu une application qui a utilisé une couleur différente que ceux définis dans la référence.
Comment peut-on utiliser une couleur autre que ceux définis dans la référence?
Merci d'avance.
- Je vous recommande fortement de Matt Gallagher's approche plus de celui que vous avez accepté! Veuillez envisager de donner un coup d'oeil si vous ne l'avez pas déjà.
- La réponse est dans ce post sont tellement foiré. Tout le monde s'il vous plaît ignorer la cote la plus élevée et aller voter le réel de réponses correctes, qui sont en bas.
Vous devez vous connecter pour publier un commentaire.
La meilleure façon de définir la sélection consiste à définir la
selectedBackgroundView
sur la cellule lorsque vous construire.c'est à dire
L'image utilisée doit avoir un joli dégradé (comme la sélection par défaut). Si vous voulez juste d'une télévision couleur, vous pouvez utiliser une UIView au lieu d'un
UIImageView
et définir labackgroundColor
de la couleur que vous voulez.Ce contexte est ensuite appliquée automatiquement lorsque la ligne est sélectionnée.
Réglage de la
selectedBackgroundView
semble avoir aucun effet lorsque lacell.selectionStyle
est fixé àUITableViewCellSelectionStyleNone
. Lorsque je n'ai pas mis le style est juste utilise la valeur par défaut de gris.En utilisant la première suggestion qui insère la coutume
UIView
dans la cellule ne manipuler la cellule, mais il n'apparaît pas lorsque la cellule est touché, seulement après l'action sélectionnée est terminé, ce qui est trop tard parce que je suis le poussant à un nouveau point de vue. Comment puis-je obtenir la vue sélectionnée dans la cellule pour afficher avant le début de l'opération sélectionnée?-setHighlited:animated:
méthode deUITableViewCell
classe.Si vous avez un sous-classé UITableViewCell, alors vous pouvez personnaliser les différents éléments de la cellule en substituant les suivantes:
MODIFIER pour iOS7:
comme Sasho dit, vous avez aussi besoin de
J'ai essayé quelques-uns des ci-dessus, et , je préfère créer mon propre sous-classe de UITableViewCell, puis remplacer le touchesBegan/touchesCancelled/touchesEnded méthodes. Pour ce faire, ignorer toutes les selectedBackgroundView et highlightedColor propriétés de la cellule, et, au lieu de juste mettre ces couleurs manuellement à chaque fois que l'une des méthodes ci-dessus sont appelés. Par exemple, si vous souhaitez affecter à la cellule ont un fond vert avec le texte en rouge, essayez ceci (à l'intérieur de votre cellule personnalisé sous-classe):
Noter que pour que cela fonctionne, vous devez définir:
Sinon, vous devrez d'abord obtenir la sélection actuelle de style.
EDIT:
Je suggère d'utiliser le touchesCancelled méthode pour revenir à l'original en couleurs de cellule, mais simplement ignorer le touchesEnded méthode.
Remplacer didSelectRowAtIndexPath: et dessiner une UIView d'une couleur de votre choix et de l'insérer derrière la UILabel à l'intérieur de la cellule. Je voudrais faire quelque chose comme ceci:
Vous pouvez choisir d'animer ce point de vue quand il sera désactivée et satisferont à vos exigences.
setSelected:highlighted:
dans la cellule et de faire de la logique, si vous allez profiter de cette approche, de sorte qu'il fonctionne dans tous les contrôleurs de vue. Comme Matt dit, l'utilisationselectedBackgroundView
est une bien meilleure approche.Sous-classe UITableViewCell et remplacer
setHighlighted:animated:
Vous pouvez définir une sélection personnalisée de couleur de couleur par la définition de la backgroundColor (voir WIllster réponse):
Vous pouvez définir une image de fond personnalisée par le réglage de la backgroundView propriété:
Pour ajouter une couleur personnalisée utilisez le code ci-dessous. Et de la rendre transparente l'utilisation
alpha: 0.0
Si vous utilisez de la couleur personnalisée et vous voulez faire des coins arrondis look utilisation:
Aussi, l'utiliser pour une meilleure animation et de sentir