J'ai implémenté une classe de cellules de vue tableau personnalisée qui hérite de UITableViewCell
. La vue du tableau contient une image d'arrière-plan, je veux donc que l'arrière-plan de la cellule soit transparent. Cela a l'air bien avant iOS7.
Cependant, dans iOS7, la cellule est toujours affichée avec un fond blanc.
Même pour Xcode7, 2015, il y a un bug dans le storyboard : il faut définir la couleur de fond d'une cellule dans le code.
ios
objective-c
cocoa-touch
ios7
Kjuly
la source
la source
Réponses:
Comme l'a dit Apple DOC ( UITableViewCell Class Reference ):
Donc, pour mon cas, pour afficher les cellules avec un arrière-plan transparent, il suffit d'implémenter la méthode de délégation dans le contrôleur de vue de table comme ci-dessous:
Remarque : comme @null l'a dit, "... il semble y avoir un bogue dans le constructeur d'interface ..." , je ne suis pas tout à fait sûr qu'il y ait un bogue, mais il semble que son commentaire ait obtenu plusieurs votes. Il peut donc y avoir quelque chose qui ne va pas si vous utilisez IB. :)
la source
tableView:cellForRowAtIndexPath:
méthode.Je l'ai étudié un peu et j'ai découvert que la cellule backgroundColor est définie par le système Appearance. Donc, si toutes les cellules de votre application ont un arrière-plan clair, la solution la plus simple serait:
Et même s'ils ont un arrière-plan différent, la couleur claire semble être la plus pratique par défaut.
la source
UITableViewCell
s, donc ce n'était pas un problème pour moi de fournir une superclasse avec un initialiseur pour définir la couleur BGclearColor
, mais devinez quoi? Cela n'a pas fonctionné ... Je veux dire, POURQUOI, APPLE?Écrivez ceci dans votre méthode cellForRowAtIndexPath avant de retourner la cellule;
la source
La couleur d'arrière-plan par défaut d'un
UITableViewCell
dans iOS 7 est le blanc.Vous devez définir la
backgroundColor
propriété quelque part dans votre code. Par exemple, définissez-le après avoir nouvellement créé la cellule.la source
En fait, j'ai trouvé que le problème venait du fait que la couleur d'arrière-plan de l'UITableView n'était pas définie sur effacer. Si vous modifiez la couleur d'arrière-plan de UITableViewCell pour effacer et que vous constatez que vous voyez toujours du blanc, assurez-vous que la couleur d'arrière-plan de UITableView est définie sur effacer (ou ce que vous voulez).
Dans Swift
la source
C'est définitivement un bogue iOS. Dans iOS 8, la définition de la couleur d'arrière-plan
Interface Builder
fonctionne bien pour iPhone, mais sur iPad, c'est toujourswhiteColor
. Pour résoudre ce problème, dans lecellForIndexPath
message de la source de données, insérez ceci:cell.backgroundColor = cell.backgroundColor
Et cela fonctionnera. C'est exactement pourquoi j'ai dit que c'était un bogue puisque le code lui-même est plutôt bullsh * t, mais cela fonctionne.
la source
Il se peut que votre UITableViewCell soit sélectionné par défaut. Vous pouvez le confirmer en utilisant le nouveau débogueur visuel de Xcode 6 (ou découvrir exactement quelle vue provoque l'apparition de cette cellule blanche).
Fait intéressant, après avoir su cela .. définir la couleur d'arrière-plan de la cellule sélectionnée pour effacer ne fonctionnait toujours pas.
la source
J'ai constaté qu'aucun de ces éléments ne fonctionnait à partir de XCode 5.1.1, iOS 7.1.
Si vous utilisez Interface Builder avec des cellules prototypes, sélectionnez la cellule prototype, puis dans le sélecteur d'attributs de la section Vue, modifiez la valeur par défaut du formulaire d'arrière-plan sur Effacer la couleur:
Cela semble bien fonctionner. Aucune des modifications de code ci-dessus n'est nécessaire non plus - il s'agit d'une solution IB pure.
la source
La réponse acceptée n'a pas résolu le problème pour moi. Je devais faire ceci:
À partir de la méthode cellForRowAtIndexPath de la classe de source de données de la table:
la source
cell = [tableView dequeueReusableCellWithIdentifier:<#Reuse ID#> forIndexPath:indexPath]
. Dans les versions antérieures, vous supprimez l'argument indexPath, puis testez la valeur nil, instanciant avecinitWithStyle:reuseIdentifier
selon votre extrait de code dans le cas nil.Pour moi , la mise
cell.backgroundColor = cell.contentView.backgroundColor;
soit danstableView:willDisplayCell:forRowAtIndexPath:
outableView:cell:forRowAtIndexPath:
fait le travail.C'est parce que j'ai défini la couleur d'arrière-plan de contentView dans Interface Builder comme souhaité.
la source
Lors de l'ajout d'objets d'interface utilisateur à une cellule, Xcode 5 / IOS 7 ajoute une nouvelle «vue de contenu» qui sera la vue de tous les éléments de la cellule. Pour définir la couleur d'arrière-plan de la cellule, définissez la couleur d'arrière-plan de cette vue de contenu. Les solutions ci-dessus n'ont pas fonctionné pour moi, mais celle-ci a bien fonctionné pour moi.
la source
Solution Swift 1.2:
Ajoutez simplement une définition explicite pour la couleur d'arrière-plan de votre cellule comme ceci:
la source
Eu un problème similaire, a dû
ajoutez ceci au code pour le corriger
la source
Vous pouvez également utiliser un code couleur pour rendre votre cellule UITableView lucrative.
Voici le code pour appliquer la méthode du code couleur:
la source