Je me demande comment changer la couleur bleue/sélection d'un UITableViewCell
, des idées?Comment changer la couleur de surbrillance bleue d'un UITableViewCell?
Répondre
Vous pouvez modifier la couleur de surbrillance de plusieurs manières.
Modifier la propriété selectionStyle de votre cellule. Si vous le changez en
UITableViewCellSelectionStyleGray
, ce sera gris.Modifier la propriété
selectedBackgroundView
. En fait, ce qui crée le dégradé bleu est une vue. Vous pouvez créer une vue et dessiner ce que vous voulez, et utiliser la vue comme arrière-plan de vos cellules de vue de table.
UITableViewCell
a trois styles de sélection par défaut: -
- Bleu
- gris
- Aucun
La mise en œuvre est la suivante: -
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *) indexPath {
[cell setSelectionStyle:UITableViewCellSelectionStyleNone];
}
plutôt que ces trois style par défaut, nous pouvons également personnaliser pour notre style attendu par la propriété selectedBackgroundView –
A travaillé pour moi ... Merci une tonne –
Zonble a déjà fourni une excellente réponse. J'ai pensé qu'il pourrait être utile d'inclure un extrait de code court pour ajouter un UIView
à la cellule tableview qui se présentera comme vue d'arrière-plan sélectionnée.
cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease];
UIView *selectionColor = [[UIView alloc] init];
selectionColor.backgroundColor = [UIColor colorWithRed:(245/255.0) green:(245/255.0) blue:(245/255.0) alpha:1];
cell.selectedBackgroundView = selectionColor;
-
cellule
- est mon
UITableViewCell
- J'ai créé un UIView et définir sa couleur de fond en utilisant des couleurs RVB (gris clair)
- Je suis ensuite la cellule
selectedBackgroundView
être leUIView
que j'ai créé avec mon couleur de fond choisie
Cela a bien fonctionné pour moi. Merci pour le conseil Zonble.
Cela ne fonctionne pas trop bien quand Si vous sélectionnez cette option, la cellule perd les limites et n'est pas arrondie lorsque la première ou la dernière cellule est –
@kirk, vous voulez dire groupé :) – Tieme
@Tieme, non, je veux dire [sections] (http://developer.apple.com/library/ios/#documentation/uikit/reference/UITableView_Class/Reference/Reference.html): "Une vue de table est composée de zéro section ou plus, chacune avec ses propres lignes." –
Si vous voulez changer l'application large, vous pouvez ajouter la logique à votre délégué App
class AppDelegate: UIResponder, UIApplicationDelegate {
//... truncated
func application(application: UIApplication!, didFinishLaunchingWithOptions launchOptions: NSDictionary!) -> Bool {
// set up your background color view
let colorView = UIView()
colorView.backgroundColor = UIColor.yellowColor()
// use UITableViewCell.appearance() to configure
// the default appearance of all UITableViewCells in your app
UITableViewCell.appearance().selectedBackgroundView = colorView
return true
}
//... truncated
}
Parfait. Une idée de comment définir la couleur du texte de cette cellule par défaut globalement sur select? – BananaAcid
cela fonctionne, mais la sélection est effacée directement lorsque vous appuyez sur le nouveau contrôleur de vue. – bobmoff
Belle façon de faire des changements globaux à UITableViewCell – Shashi3456643
Je dois définir le style de sélection UITableViewCellSelectionStyleDefault
pour la couleur d'arrière-plan personnalisé au travail. Si un autre style est utilisé, la couleur d'arrière-plan personnalisée sera ignorée. Testé sur iOS 8.
Le code complet pour la cellule comme suit:
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
static NSString *CellIdentifier = @"MyCell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
}
// This is how you change the background color
cell.selectionStyle = UITableViewCellSelectionStyleDefault;
UIView *bgColorView = [[UIView alloc] init];
bgColorView.backgroundColor = [UIColor redColor];
[cell setSelectedBackgroundView:bgColorView];
return cell;
}
complet: si vous avez créé votre propre sous-classe de UITableViewCell vous pouvez mettre en œuvre le - (void) setSelected: (BOOL) sélectionné animation: (BOOL) méthode animée et définissez la couleur d'arrière-plan de certaines vues que vous avez ajoutées dans la vue du contenu. (Si tel est le cas) ou de la contentView lui-même (si elle ne sont pas couverts par l'un de vos vues.
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
if(selected) {
self.contentView.backgroundColor = UIColor.blueColor;
} else {
self.contentView.backgroundColor = UIColor.whiteColor;
}
}
(ne pas utiliser?Cette approche a deux avantages par rapport à l'utilisation de selectedBackgroundView: elle utilise moins de mémoire et moins de CPU, ce que vous ne remarquerez même pas si vous affichez des centaines de cellules.
Ceci fonctionne seulement après qu'une nouvelle vue soit assignée au 'selectedBackgroundView' Au tout début de la méthode, ajoutez 'self. selectedBackgroundView = [UIView new]; ' – enadun
Dans Swift, utilisez ceci dans cellForRowAtIndexPath
let selectedView = UIView()
selectedView.backgroundColor = UIColor.white
cell.selectedBackgroundView = selectedView
Si vous voulez que votre couleur de sélection soit la même dans tous les UITableViewCell
, utiliser dans AppDelegate
.
let selectedView = UIView()
selectedView.backgroundColor = UIColor.white
UITableViewCell.appearance().selectedBackgroundView = selectedView
@IBDesignable class UIDesignableTableViewCell: UITableViewCell {
@IBInspectable var selectedColor: UIColor = UIColor.clearColor() {
didSet {
selectedBackgroundView = UIView()
selectedBackgroundView?.backgroundColor = selectedColor
}
}
}
Dans votre story-board, définissez la classe de votre UITableViewCell à UIDesignableTableViewCell, l'inspecteur Attributs, vous pouvez changer la couleur sélectionnée de votre cellule à une couleur.
Vous pouvez utiliser ceci pour toutes vos cellules. Voici à quoi ressemblera votre inspecteur d'attributs.
Très créatif! génial! –
Swift 3,0/4,0
Si vous avez créé votre propre cellule personnalisée, vous pouvez changer la couleur de sélection sur awakeFromNib()
pour toutes les cellules:
override func awakeFromNib() {
super.awakeFromNib()
let colorView = UIView()
colorView.backgroundColor = UIColor.orange.withAlphaComponent(0.4)
self.selectedBackgroundView = colorView
}
cool, trouvé une bonne explication et un exemple ici: http: //cocoawithlove.com/2009/04/easy-custom-uitableview-drawing.html –
J'ai réalisé que dans IB, vous ne pouvez pas définir le UITableViewCell "Selectio n "à" None "- parce que' selectedBackgroundView' ne s'affichera jamais. Ce n'est qu'après avoir réglé "Sélection" sur "Default" que le "selectedBackgroundView" apparaît. Testé sur iOS 6 et 7. – Jonny
Merci pour la bonne note! Cela le rend si simple maintenant: vous créez une nouvelle vue (pas besoin de spécifier le cadre: 'cell.selectedBackgroundView = [UIView new];' et vous définissez la couleur que vous voulez: 'cell.selectedBackgroundView.backgroundColor = [UIColor colorWithHex : @ "ecf2f5" etAlpha: 1]; ' –