swift 如何为表格视图中的每个单元格提供 4 种不同的颜色
How to give 4 different colours for each cell in tableview in swift
我正在使用 tableview 显示数据。我只有一个部分和行根据 JSON 响应计数
这里我使用了四种颜色(粉色、黄色、绿色、蓝色)作为单元格视图的背景色
现在我可以用一种颜色(黄色)显示所有单元格..现在我需要用 4 种(粉色、黄色、绿色、蓝色)颜色显示每个单元格
我的意思是,如果有两个单元格,那么我需要显示单元格背景颜色,一个单元格为粉红色,另一个单元格为黄色
如果有 4 个单元格,则 4 个单元格背景颜色为粉色、黄色、绿色、蓝色
如果有 8 个单元格,那么前 4 个单元格为粉色、黄色、绿色、蓝色,然后接下来的 4 个单元格为粉色、黄色、绿色、蓝色
像这样..
表格视图单元格的代码:
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.homeData?.result?.recents?.count ?? 0
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "HomePostsTableViewCell", for: indexPath) as! HomePostsTableViewCell
cell.selectionStyle = .none
cell.catView.backgroundColor = .yellow
cell.categoryLabel.text = category
return cell
}
此处显示所有显示为黄色的单元格 cell.catView.backgroundColor = .yellow
但我需要将 cell.catView.backgroundColor
更改为粉红色、黄色、绿色、蓝色..
怎么样?请指导我
您可以在 cellForRowAt
方法中添加此逻辑。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "HomePostsTableViewCell", for: indexPath) as! HomePostsTableViewCell
cell.selectionStyle = .none
switch indexPath.row % 4 {
case 0:
cell.catView.backgroundColor = .systemPink
case 1:
cell.catView.backgroundColor = .yellow
case 2:
cell.catView.backgroundColor = .green
case 3:
cell.catView.backgroundColor = .blue
default: break
}
cell.categoryLabel.text = category
return cell
}
最好的方法是使用 to %
运算符。它将获得余数并将其与颜色相关联。
看起来像这样
switch indexPath.row % 4 {
case 0:
cell.catView.backgroundColor = .yellow
case 1:
cell.catView.backgroundColor = .pink
case 2:
cell.catView.backgroundColor = .green
case 3:
cell.catView.backgroundColor = .blue
}
或者,您可以将所有颜色存储在一个数组中并在其中使用 %
。
let colors: [UIColor] = [.yellow, .pink, .green, .blue]
cell.catView.backgroundColor = colors[indexPath.row % colors.count]
我正在使用 tableview 显示数据。我只有一个部分和行根据 JSON 响应计数
这里我使用了四种颜色(粉色、黄色、绿色、蓝色)作为单元格视图的背景色
现在我可以用一种颜色(黄色)显示所有单元格..现在我需要用 4 种(粉色、黄色、绿色、蓝色)颜色显示每个单元格
我的意思是,如果有两个单元格,那么我需要显示单元格背景颜色,一个单元格为粉红色,另一个单元格为黄色
如果有 4 个单元格,则 4 个单元格背景颜色为粉色、黄色、绿色、蓝色
如果有 8 个单元格,那么前 4 个单元格为粉色、黄色、绿色、蓝色,然后接下来的 4 个单元格为粉色、黄色、绿色、蓝色
像这样..
表格视图单元格的代码:
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int {
return self.homeData?.result?.recents?.count ?? 0
}
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "HomePostsTableViewCell", for: indexPath) as! HomePostsTableViewCell
cell.selectionStyle = .none
cell.catView.backgroundColor = .yellow
cell.categoryLabel.text = category
return cell
}
此处显示所有显示为黄色的单元格 cell.catView.backgroundColor = .yellow
但我需要将 cell.catView.backgroundColor
更改为粉红色、黄色、绿色、蓝色..
怎么样?请指导我
您可以在 cellForRowAt
方法中添加此逻辑。
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell {
let cell = tableView.dequeueReusableCell(withIdentifier: "HomePostsTableViewCell", for: indexPath) as! HomePostsTableViewCell
cell.selectionStyle = .none
switch indexPath.row % 4 {
case 0:
cell.catView.backgroundColor = .systemPink
case 1:
cell.catView.backgroundColor = .yellow
case 2:
cell.catView.backgroundColor = .green
case 3:
cell.catView.backgroundColor = .blue
default: break
}
cell.categoryLabel.text = category
return cell
}
最好的方法是使用 to %
运算符。它将获得余数并将其与颜色相关联。
看起来像这样
switch indexPath.row % 4 {
case 0:
cell.catView.backgroundColor = .yellow
case 1:
cell.catView.backgroundColor = .pink
case 2:
cell.catView.backgroundColor = .green
case 3:
cell.catView.backgroundColor = .blue
}
或者,您可以将所有颜色存储在一个数组中并在其中使用 %
。
let colors: [UIColor] = [.yellow, .pink, .green, .blue]
cell.catView.backgroundColor = colors[indexPath.row % colors.count]