wake-up-neo.net

Wie mache ich dieses UITableView in Swift 3 klar (transparent)?

Wie mache ich das UITableView und die Zellen in Swift 3 klar?.

Ich habe die vorherigen Threads durchlaufen, bekomme aber immer noch einen weißen Hintergrund.

Wie Sie meinem Code entnehmen können, habe ich die verschiedenen Methoden ausprobiert:

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.
}

und in meiner Zellentabelle Funktion:

  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

}

Dieses Gif zeigt das Problem - Beachten Sie, dass die schwarzen Linien, die die Tabelle enthalten, gerade nicht ausgefüllt sind (da niemand angemeldet ist).

Aber für eine Sekunde ist es klar, dann wird es weiß ..__ Wo gehe ich schief?

Dies ist aus einem anderen Beitrag, den ich gefunden habe:

Apple-Dokument sagt

... In iOS 7 haben Zellen standardmäßig einen weißen Hintergrund. In früheren Versionen von iOS erben Zellen die Hintergrundfarbe der umgebenden Tabellenansicht. Wenn Sie die Hintergrundfarbe einer Zelle ändern möchten, tun Sie dies in der tableView: willDisplayCell: forRowAtIndexPath: -Methode Ihres Table View-Delegaten.

Möglicherweise müssen Sie die Delegate-Methode "WillDisplayCell UITableView" verwenden, um einen transparenten Hintergrund für Ihre Tabellenansicht zu erhalten.

- (void)tableView:(UITableView *)tableView willDisplayCell:(UITableViewCell *)cellforRowAtIndexPath:(NSIndexPath *)indexPath

{
  [cell setBackgroundColor:[UIColor clearColor]];
}

Wie wende ich den obigen Code so an, wie er für iOS 7 heißt?

15
RDowns

Hinweis: Der folgende Code wurde in Swift 3 getestet.

Methode 1:

Wählen Sie Ihre tableViewCell aus Ihrer storyboard und gehen Sie zu Attributes Inspector unter View, Background in clear.

Methode 2: Versuchen Sie den folgenden Code in Ihrer cellForRowAt.

  cell.layer.backgroundColor = UIColor.clear.cgColor

 enter image description here

Hinweis: Wenn obige Methode nicht funktioniert hat. Versuchen Sie, Ihre Projekterstellung durch Drücken von shift + option + command + k zu löschen.

Update: Aktualisieren Sie Ihre cellForRowAt mit dem folgenden Code ...

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
}
38
Joe

Sie können es versuchen

In viewDidLoad

tableView.backgroundColor = UIColor.clear

In cellForRowAt:  

cell.contentView.backgroundColor = UIColor.clear

Es ist Arbeit für mich.

9
Eugene Lezov

Sie müssen sowohl den Tabellen- als auch den Zellenhintergrund klar setzen.

Inside TableView-Funktion:

tableView.backgroundColor = .clear
cell.backgroundColor = .clear
tableView.tableFooterView = UIView()
7
antti-ka

Damit dies funktioniert, müssen Sie eine neue tableview-Methode implementieren:

func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell,
               forRowAt indexPath: IndexPath) {
    cell.backgroundColor = UIColor.clear
}
4

Die ersten beiden Antworten funktionieren für mich nicht, also füge ich überall einen klaren Hintergrund hinzu und die weißen BG gehen weg.

cell.layer.backgroundColor = UIColor.clear.cgColor
cell.backgroundColor = .clear
tableView.layer.backgroundColor = UIColor.clear.cgColor
tableView.backgroundColor = .clear

Swift 4

3
El-Burritos

Es fehlt die Einstellung der Hintergrundfarbe von contentView der Zelle.

cell.contentView.backgroundColor = UIColor.clear

2
dlbuckley

Vielleicht können Sie das Alpha Ihrer Tabellenansicht überprüfen.

1

Stellen Sie sicher, dass im Identitätsinspektor Benutzerdefinierte Klasse -> Klasse "YourCustomClassCellName" im Dropdown-Menü ausgewählt ist. Stellen Sie sicher, dass Ihre UITableViewCell im Interface Builder ausgewählt ist, und stellen Sie sicher, dass Ihr Bezeichner "YourCellName" und dann in der Methode func tableView (_ tableViewL UITableView, cellForRowAt) vor der Rückgabezelle ist, die Sie über cell.backgroundColor = UIColor.clear verfügen. 

    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()
    } 

Ich hatte das gleiche Problem und schrieb den gesamten Code, bevor ich überprüfte, um sicherzustellen, dass meine CellClass ausgewählt und das Gesicht mit den Händen gefasst wurde, als ich mich eine Stunde lang fragte, warum es mit einem anderen viewController funktionierte, und nicht in diesem Fall. Selbst wenn Sie IB verwenden, um die Standardhintergründe zu löschen, müssen Sie immer noch cell.backgroundColor = UIColor.clear schreiben. Ich war wie yep, ich habe einen anderen Bug in 8.2.1 gefunden, aber nicht nur einen iD10t-Operator-Bug. 

1
Cory Billeaud

Ich habe mit Swift 3 getestet. Es funktioniert  

uiTableName.backgroundView = nil
uiTableName.backgroundColor = UIColor.clear
1
Thinesh

Diese Einstellungen sind nicht ausreichend, da Sie clear color Nicht auf das contentView des tableView angewendet haben und es daher weiß färbt. Versuchen Sie dies in cellForRowAtIndexPath

cell.contentView.backgroundColor = UIColor .clearColor()

1
Ahsan Ebrahim