如何在Swift 3中使这个UITableView
和它的单元格清晰。
我已经完成了之前的主题,但我仍然有白色背景。
从我的代码中可以看出,我尝试了各种方法:
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?
答案 0 :(得分:44)
注意:以下代码已在Swift 3
中进行了测试。
方法1:
从storyboard
中选择您的tableViewCell,然后转到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
}
答案 1 :(得分:9)
你可以试试这个
在 viewDidLoad :
中tableView.backgroundColor = UIColor.clear
在 cellForRowAt:
中cell.contentView.backgroundColor = UIColor.clear
它为我工作。
答案 2 :(得分:7)
您必须清除表格和单元格背景。
内部tableView函数:
tableView.backgroundColor = .clear
cell.backgroundColor = .clear
tableView.tableFooterView = UIView()
答案 3 :(得分:4)
为此,你必须实现一个新的tableview方法:
func tableView(_ tableView: UITableView, willDisplay cell: UITableViewCell,
forRowAt indexPath: IndexPath) {
cell.backgroundColor = UIColor.clear
}
答案 4 :(得分:4)
前两个答案对我不起作用,因此我到处都添加了清晰的背景,白色的bg消失了。
cell.layer.backgroundColor = UIColor.clear.cgColor
cell.backgroundColor = .clear
tableView.layer.backgroundColor = UIColor.clear.cgColor
tableView.backgroundColor = .clear
SWIFT 4.2
答案 5 :(得分:2)
您缺少设置单元格contentView的背景颜色。
cell.contentView.backgroundColor = UIColor.clear
答案 6 :(得分:1)
也许,您可以查看表格视图的字母。
答案 7 :(得分:1)
设置这些内容并不足够,因为您尚未将clear color
应用于contentView
的{{1}},因此其中的颜色为白色。在cellForRowAtIndexPath中尝试这个
tableView
答案 8 :(得分:1)
确保在Identity Inspector中有自定义类 - > Class" YourCustomClassCellName"在下拉菜单中选择。在Interface Builder中选择UITableViewCell后,请确保您的标识符是" YourCellName"然后在func tableView(_ tableViewL UITableView,cellForRowAt)方法返回单元格之前,你有cell.backgroundColor = UIColor.clear,
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操作符错误。
答案 9 :(得分:1)
我使用swift 3测试过。
uiTableName.backgroundView = nil
uiTableName.backgroundColor = UIColor.clear
答案 10 :(得分:1)
在 TableView 和 TableViewCell 的 Storyboard 中,不要将背景设置为“Clear/Default”,而是将背景设置为白色(或任何颜色)并具有不透明度0.
还要确保您将 ContentView 背景设置为清除,但 TableViewCell 是我绊倒的原因。通过这样做,您不需要在代码中执行任何操作。
答案 11 :(得分:0)
在Swift 4中,在所需类的viewDidLoad下编写以下代码:-
tableView.backgroundColor = UIColor.clear
在cellForRowAt(即tableView的dataSource)下编写以下代码:-
let cell = tableView.dequeueReusableCell(withIdentifier: "CellIdentifierName", for: indexPath) as! UITableViewCell //Cell ClassName
cell.layer.backgroundColor = UIColor.clear.cgColor
return cell
答案 12 :(得分:0)
为什么没人这么说?
@IBOutlet weak var tableView: UITableView!
// Drag and drop the tableView from the storyboard
override func viewDidLoad() {
super.viewDidLoad()
tableView.isHidden = true
}
结果使您有机会用单行隐藏整个tableView。