Je dispose d'une UITableViewCell
sous-classe. J'ai défini le contentView
de ma sous-classe de cellule à d'une UIView
dans laquelle je surcharge la classe -drawRect:
et faire tout le dessin là-bas.
De plus, je mets cell.contentView.opaque = NO
afin d'obtenir la transparence dans certaines zones de la cellule (malheureusement, une image de fond derrière la table doit apparaître à travers chaque cellule dans certaines parties pour obtenir un effet stylistique. je sais que c'est un problème de performance. il doit en être ainsi).
Problème : je vois toujours le joli fond bleu dégradé par défaut se dessiner derrière ma cellule (dans les zones transparentes) lorsqu'elle est sélectionnée ou mise en évidence (en appuyant dessus). Cela masque l'image derrière le tableau, ce qui est mauvais.
Objectif : empêcher l'apparition de l'arrière-plan bleu dégradé, tout en étant en mesure d'inspecter l'écran de l'ordinateur. cell.isSelected
y cell.isHighlighted
les propriétés de l'intérieur -[MyContentView drawRect:]
pour déterminer comment dessiner ma propre sélection/mise en évidence personnalisée.
Ce que j'ai essayé :
-
paramètre
cell.selectionStyle = UITableViewCellSelectionStyleNone
a l'effet désiré d'empêcher l'apparition d'un joli fond de sélection en gradient bleu, mais empêche également l'utilisation de la fonctioncell.isSelected
ycell.isHighlighted
ne sont pas correctement définies, ce qui signifie que je ne peux pas faire ma propre sélection personnalisée/le dessin en surbrillance. -
réglage
cell.selectionBackgroundView = nil
ycell.backgroundView = nil
dans la cellule-init
o-prepareForReuse
n'empêche pas l'arrière-plan de sélection du gradient bleu -
réglage
cell.selectionBackgroundView = nil
en el-[MyContentView -drawRect:]
méthode fait ont l'effet désiré d'empêcher l'arrière-plan de sélection du gradient bleu, mais cela semble très peu pratique -
Le remplacement de -[UITableViewCell setSelected:animated :] par un no-op. Cela n'a pas l'effet désiré d'empêcher l'arrière-plan de sélection en dégradé bleu.