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