it-roy-ru.com

Как мне сделать этот 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

}

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

Но на секунду все ясно, потом белеет .... Куда я иду не так?

Это из другого поста, который я нашел:

Apple, документ гласит

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

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

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

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

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

15
RDowns

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

Метод 1:

Выберите tableViewCell из storyboard и перейдите Attributes Inspector в поле View, измените Background на clear

Метод 2: Попробуйте следующий код внутри cellForRowAt

  cell.layer.backgroundColor = UIColor.clear.cgColor

 enter image description here

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

Update: Обновите свой 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
}
38
Joe

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

In viewDidLoad

tableView.backgroundColor = UIColor.clear

In cellForRowAt:  

cell.contentView.backgroundColor = UIColor.clear

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

9
Eugene Lezov

Вы должны очистить фон таблицы и ячейки.

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

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

Чтобы это работало, вы должны реализовать новый метод tableview:

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

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

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

Swift 4

3
El-Burritos

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

cell.contentView.backgroundColor = UIColor.clear

2
dlbuckley

Может быть, вы можете проверить альфа вашего табличного представления.

1
Barış Özçelik

Убедитесь, что в инспекторе удостоверений выбран пользовательский класс -> класс «YourCustomClassCellName», выбранный в раскрывающемся меню. Выбрав UITableViewCell в Интерфейсном Разработчике, убедитесь, что ваш Идентификатор равен «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. Я был как да, я нашел еще одну ошибку в 8.2.1, но не просто ошибка оператора iD10t. 

1
Cory Billeaud

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

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

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

cell.contentView.backgroundColor = UIColor .clearColor()

1
Ahsan Ebrahim