如何动态更改表格视图单元格的颜色
Posted
技术标签:
【中文标题】如何动态更改表格视图单元格的颜色【英文标题】:How to change the color of a table view cell dynamically 【发布时间】:2016-12-18 11:46:47 【问题描述】:如何动态改变表格视图单元格的颜色。 我想实现屏幕截图所示的效果,请提出建议。
提前致谢。
【问题讨论】:
swift 还是objectiv-c? 您得到的两个答案都为您提供了根据单元格的 indexPath 分配颜色的方法。您需要做的是弄清楚您想要的单元格颜色,以及如何生成这些颜色。您想要在示例图像中显示的特定颜色吗?我建议将您的示例颜色放入 Photoshop 之类的照片编辑器中,对每个颜色的 RGB 值进行采样,然后得出一组颜色值(如@tejendrasingh 的答案)或为每个步骤生成这些颜色值的函数(如阿德里安的回答)。 你总共有多少个单元格?您需要将颜色变化从开始到结束单元格展开。 【参考方案1】:这很容易做到:
我在下面给出一个演示:
-
首先,将
tableView
拖到vc
:
-
其次,设置
tableView
的delegate和dataSource:
第三步,在你的vc
中,设置data
:
导入 UIKit
类 ViewController: UIViewController, UITableViewDelegate, UITableViewDataSource
@IBOutlet 弱变量表视图:UITableView!
var cellCount:Int! = 6
var cus_color:UIColor = UIColor.init(red: 35 / 255.0, green: 204/255.0, blue: 216.0/255.0, alpha: 1.0)
override func viewDidLoad()
super.viewDidLoad()
self.tableView.separatorStyle = .none
func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat
return 100
func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int
return cellCount
func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell
let cell = UITableViewCell() // or your custom cell
let perLevel:CGFloat = CGFloat(1.0) / CGFloat(self.cellCount)
cell.backgroundColor = UIColor.init(red: 35 / 255.0, green: 204/255.0, blue: 216.0/255.0, alpha: (perLevel + CGFloat(indexPath.row) * perLevel))
return cell
func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath)
self.tableView.deselectRow(at: indexPath, animated: false)
【讨论】:
【参考方案2】:您可以使用 UITableViewCell 属性 backgroundColor 来动态设置单元格颜色。
例子-
-(UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
UITableViewCell* cell = [self.tableView dequeueReusableCellWithIdentifier:@"Cell"];
if (!cell)
cell = [[UITableViewCell alloc]initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"Cell"];
//cellColorHolder is UIColor object type array.
cell.backgroundColor = (UIColor*)[cellColorHolder objectAtIndex:indexPath.row];
return cell;
【讨论】:
以上是关于如何动态更改表格视图单元格的颜色的主要内容,如果未能解决你的问题,请参考以下文章