如何动态更改表格视图单元格的颜色

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;

【讨论】:

以上是关于如何动态更改表格视图单元格的颜色的主要内容,如果未能解决你的问题,请参考以下文章

动态更改表格视图单元格的高度

如何更改分组的表格视图单元格的背景?

静态部分/单元格的 UITableView 背景图像

如何在表格视图中更改一个单元格的高度? [复制]

在表格视图中更改单元格的背景行为不符合预期[关闭]

如何使表格视图单元格的大小动态变化?