Comment rendre cette UITableView
et ses cellules claires dans Swift 3.
J'ai parcouru les discussions précédentes mais je continue à avoir un fond blanc.
Comme vous pouvez le voir dans mon code, j'ai essayé les différentes méthodes mentionnées:
override func viewDidLoad() {
self.communitiesTableView.delegate = self
self.communitiesTableView.dataSource = self
let background = CAGradientLayer().bespokeColor()
background.frame = self.view.bounds
// view.addSubview(background)
super.viewDidLoad()
// Do any additional setup after loading the view.
}
et dans ma fonction de table de cellules:
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let title = self.communities[indexPath.row]
let cell = UITableViewCell()
cell.textLabel?.text = title
cell.textLabel?.font = UIFont(name: "Avenir", size: 12)
cell.textLabel?.textColor = UIColor.red
cell.textLabel?.backgroundColor = UIColor.clear
cell.contentView.backgroundColor = UIColor.clear
communitiesTableView.backgroundColor = UIColor.clear
cell.layer.backgroundColor = UIColor.clear.cgColor
return cell
}
Ce gif montre le problème - notez que les lignes noires montrant que le tableau est présent ne sont tout simplement pas remplies (personne n’est connecté)
Mais pendant une seconde c'est clair, puis devient blanc… .. Où est-ce que je me trompe?
Ceci est d'un autre post que j'ai trouvé:
Le document Apple dit
... Dans iOS 7, les cellules ont un fond blanc par défaut; Dans les versions antérieures d'iOS, les cellules héritent de la couleur d'arrière-plan de la vue tabulaire englobante. Si vous souhaitez modifier la couleur d'arrière-plan d'une cellule, utilisez la méthode tableView: willDisplayCell: forRowAtIndexPath: de votre délégué de la vue de table.
Vous devrez peut-être utiliser la méthode déléguée willDisplayCell UITableView pour obtenir un arrière-plan transparent pour votre vue tableau.
- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cellforRowAtIndexPath:(NSIndexPath *)indexPath
{
[cell setBackgroundColor:[UIColor clearColor]];
}
Comment puis-je appliquer le code ci-dessus car il est écrit pour iOS 7?
Remarque: Le code ci-dessous a été testé dans Swift 3
.
Méthode 1:
Sélectionnez votre tableViewCell dans votre storyboard
et passez à Attributes Inspector
sous View
changez Background
en clear
Méthode 2: Essayez le code ci-dessous dans votre cellForRowAt
cell.layer.backgroundColor = UIColor.clear.cgColor
Remarque: Si la méthode ci-dessus n'a pas fonctionné, effacez la construction de votre projet en appuyant sur shift + option + command + k
Update: Mettez à jour votre cellForRowAt
à partir du code ci-dessous ...
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "Cell", for: indexPath as IndexPath)
cell.textLabel?.text = communities[indexPath.row]
cell.textLabel?.font = UIFont(name: "Avenir", size: 12)
cell.textLabel?.textColor = UIColor.red // set to any colour
cell.layer.backgroundColor = UIColor.clear.cgColor
return cell
}
Tu peux essayer ça
Dans viewDidLoad :
tableView.backgroundColor = UIColor.clear
Dans cellForRowAt:
cell.contentView.backgroundColor = UIColor.clear
C'est un travail pour moi.
Vous devez définir à la fois le fond du tableau et celui de la cellule.
Dans la fonction tableView:
tableView.backgroundColor = .clear
cell.backgroundColor = .clear
tableView.tableFooterView = UIView()
Pour que cela fonctionne, vous devez implémenter une nouvelle méthode tableview:
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell,
forRowAt indexPath: IndexPath) {
cell.backgroundColor = UIColor.clear
}
Les deux premières réponses ne fonctionnent pas pour moi, alors j'ajoute un fond clair partout et le blanc disparaît.
cell.layer.backgroundColor = UIColor.clear.cgColor
cell.backgroundColor = .clear
tableView.layer.backgroundColor = UIColor.clear.cgColor
tableView.backgroundColor = .clear
Swift 4
Il vous manque la définition de la couleur d'arrière-plan de contentView de la cellule.
cell.contentView.backgroundColor = UIColor.clear
Peut-être pouvez-vous vérifier l'alpha de votre vue de table.
Assurez-vous que dans l'inspecteur d'identité vous avez sélectionné Classe personnalisée -> Classe "YourCustomClassCellName" sélectionnée dans le menu déroulant. Avec votre UITableViewCell sélectionnée dans Interface Builder, assurez-vous que votre identifiant est "YourCellName", puis dans la méthode func tableView (_ tableViewL UITableView, cellForRowAt) avant la cellule de retour que vous avez cell.backgroundColor = UIColor.clear i.e,
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
if let cell = tableView.dequeueReusableCell(withIdentifier: "YourCellName", for: indexPath) as? YourCellNameClass {
cell.configureCell(parameter: ClassDataModel[indexPath.row])
cell.backgroundColor = UIColor.clear
return cell
} else {
return UITableViewCell()
}
J'avais le même problème et écrit tout le code avant de vérifier si ma CellClass était sélectionnée et si ma tête était pâlie lorsque je passais une heure à me demander pourquoi cela fonctionnait sur un autre viewController et non dans ce cas. Même si vous utilisez IB pour supprimer les fonds blancs par défaut, vous devez toujours écrire cell.backgroundColor = UIColor.clear. J'étais comme eh oui, j'ai trouvé un autre bogue dans 8.2.1, mais pas simplement un bogue d'opérateur iD10t.
J'ai testé avec Swift 3. Ça marche
uiTableName.backgroundView = nil
uiTableName.backgroundColor = UIColor.clear