更改底部表格视图单元格中的标签颜色



我想要实现的是:UITableView最底部单元格中的所有标签变为灰色,并在向上滚动时将其更改回原始颜色。换句话说,一种渐变效果,只是所有标签的颜色都必须是灰色
我所取得的成就:在数组中添加原始颜色,并尝试确定哪个单元格位于底部(使用visibleCells),然后更改其标签颜色。但很多代码都依赖于手动确定偏移量,因此对我来说似乎很可怕。
我尝试过的是:添加CAGradientLayer。但它会使细胞逐渐消失。我希望单元格中的标签变成灰色。相似,但不相同
注意:单元格是一个自定义单元格,有标签、按钮,甚至还有一个简单的UITableView,我需要将所有这些颜色存储在某个地方,然后应用灰色,直到单元格位于底部。一旦它向上滚动,我将不得不重新为所有子视图上色
有人能为实现这一切提出更好的方法吗
添加问题:正如@Bamsworld下面所建议的,是否有一种混合模式可以帮助我实现这一点,即将所有底层文本呈现为灰色的混合模式?我知道乘法混合模式,但对其他模式只有一点了解。

因为UITableViewDelegate协议符合IScrollViewDelegate,您可以添加方法scrollViewDidSoll:来检测表何时滚动,并处理此方法中的任何单元格更改。

示例:(假设一个名为testTable的表视图)

// detect when it scrolls
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
// query visible cells and get how many
int numCellsOnShow = [[testTable visibleCells] count];
// get the cell to change at bottom of table (this will be the last one in the array of visible cells)
UITableViewCell *cellToEdit = [[testTable visibleCells] objectAtIndex:numCellsOnShow - 1];
cellToEdit.textLabel.textColor = [UIColor grayColor];
// revert top and second bottom cells to prevent cell aesthetic bleeding
UITableViewCell *cellToRevert = [[testTable visibleCells] objectAtIndex:numCellsOnShow - 2];
cellToRevert.textLabel.textColor = [UIColor blackColor];
UITableViewCell *topCell = [[testTable visibleCells] objectAtIndex:0];
topCell.textLabel.textColor = [UIColor blackColor];

}

在上面的代码中,我只更改了标题textLabel的颜色,但可以执行任何数量的更改/更改。

注意:如果表视图高度不是tableViewCell高度的倍数(假设表中单元格的尺寸不变),您可能会决定将底部的两个单元格变灰,因为底部单元格可能几乎看不见,即使它包含在visibleCells数组中。

最新更新