Как сделать этот UITableView прозрачным (прозрачным) в Swift 3

Как сделать это UITableView, и его ящики очищаются в Swift 3.

Я прошел предыдущие потоки, но я все еще получаю белый фон.

Как вы можете видеть из моего кода, я пробовал различные упомянутые методы:

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

и в моей функции таблицы ячеек:

  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

}

Этот gif показывает проблему - обратите внимание, что черные строки, показывающие таблицу, присутствуют, просто не заполнены (поскольку никто не зарегистрирован)

Но на секунду это ясно, затем становится белым. Где я ошибаюсь?

Это из другого сообщения, которое я нашел:

В документе Apple говорится

... В iOS 7 ячейки по умолчанию имеют белый фон; в более ранних версиях iOS ячейки наследуют цвет фона в представлении таблицы. Если вы хотите изменить цвет фона ячейки, сделайте это в методе tableView: willDisplayCell: forRowAtIndexPath: для вашего делегата представления таблицы.

Возможно, вам понадобится использовать метод делегата willDisplayCell UITableView, чтобы иметь прозрачный фон для вашего представления в таблице.

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

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

Как применить вышеприведенный код, поскольку он говорит о нем для iOS 7?

Ответ 1

Примечание: Ниже код был протестирован в Swift 3.

Метод 1:

Выберите таблицу tableViewCell из storyboard и goto Attributes Inspector в View изменить Background на clear

Способ 2: Попробуйте ввести код внутри cellForRowAt

  cell.layer.backgroundColor = UIColor.clear.cgColor

введите описание изображения здесь

Примечание: Если выше описанный метод не работает. очистите свою сборку проекта, нажав shift + option + command + k

Обновление: Обновите cellForRowAt из кода ниже...

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
}

Ответ 2

Вы можете попробовать это

В viewDidLoad:

tableView.backgroundColor = UIColor.clear

В cellForRowAt:

cell.contentView.backgroundColor = UIColor.clear

Это работает для меня.

Ответ 3

Вам необходимо установить как фон таблицы, так и ячейки.

Внутри функции tableView:

tableView.backgroundColor = .clear
cell.backgroundColor = .clear
tableView.tableFooterView = UIView()

Ответ 4

Для этого вам нужно реализовать новый метод tableview:

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

Ответ 5

Два первых ответа не работают для меня, поэтому я добавляю четкий фон везде, и белый bg исчезает.

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

SWIFT 4

Ответ 6

Вам не хватает цвета фона содержимогоView ячейки.

cell.contentView.backgroundColor = UIColor.clear

Ответ 7

Возможно, вы можете проверить свою альфа-версию таблицы.

Ответ 8

Настройка этих параметров будет недостаточной, так как вы не применили clear color к contentView tableView, и поэтому она окрашивает в нее белый цвет. Попробуйте это в cellForRowAtIndexPath

cell.contentView.backgroundColor = UIColor .clearColor()

Ответ 9

Убедитесь, что в Identity Inspector вы выбрали Custom Class → Class "YourCustomClassCellName" в раскрывающемся меню. С помощью вашего UITableViewCell, выбранного в Interface Builder, убедитесь, что ваш идентификатор является "YourCellName", а затем в методе func tableView (_ tableViewL UITableView, cellForRowAt) перед ячейкой возврата, в которой у вас есть 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()
    } 

У меня была такая же проблема, и я написал весь код до того, как я проверил, чтобы убедиться, что мой CellClass выбран, и прикоснулся к лицу, когда я потратил час, задаваясь вопросом, почему он работал на другом viewController, а не в этом случае. Даже если вы используете IB, чтобы очистить белый фон по умолчанию, вам все равно нужно написать cell.backgroundColor = UIColor.clear. Я был как yep, я нашел еще одну ошибку в 8.2.1, но не только ошибку оператора iD10t.

Ответ 10

Я тестировал с помощью Swift 3. Это работает

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