gpt4 book ai didi

ios - 需要为每个 UICollectionViewCell 分配一个背景颜色,即使在滚动时颜色也必须保持特定顺序

转载 作者:行者123 更新时间:2023-11-29 02:22:20 25 4
gpt4 key购买 nike

我有一套 13 种颜色。我需要将这些颜色分配给 backgroundColor UICollectionViewCells的属性(property)当用户滚动浏览UICollectionView时.

到目前为止,这一切都很完美,但我需要更进一步。我需要让颜色始终以特定顺序出现。

这是一个简单的例子。假设我只有三种颜色:红、黄、绿。当 Collection View 首次加载时,用户将看到红色单元格、黄色单元格和绿色单元格。如果用户一直向下滚动,然后开始向上滚动,他们会看到一个绿色单元格、一个黄色单元格,然后是一个红色单元格。

注意到颜色顺序是如何始终保持不变的吗?我的问题是找到一种方法来用我的 13 种颜色来做到这一点。

通常我会设置一个颜色数组并使用 indexPath.row 访问该数组的索引在 cellForItemAtIndexPath就像 TableView 或 Collection View 的任何其他普通数据数组一样,但是一旦我的数据数组中有超过 13 个对象,行数就会变得大于我的颜色数组数,并且将引发异常。

我还尝试使用 int 来跟踪颜色属性(property),但这行不通。颜色总是有偏差,即使只是一种颜色。

我还意识到我可以创建 13 个单独的 UICollectionViewCell子类,硬编码 backgroundColor ,给他们所有不同的标识符,并尝试在 cellForItemAtIndexPath 中设置一些切换逻辑但这似乎只是背景颜色的大量工作,而且它也会占用系统更多的内存,我想尽可能避免滞后。

最佳答案

您应该继续您的第一个想法:13 种颜色的数组。一旦你有了它,你就可以对数组中的元素数量使用 % 运算符,以确保始终具有正确的索引,并使用正确的索引来保持所需的顺序:

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
/* Do what you have to do... */

UIColor *color = [myArrayOfColor objectAtIndex:indexPath.row % [myArrayOfColor count]];
[cell setBackgroundColor:color];
return cell;
}

关于ios - 需要为每个 UICollectionViewCell 分配一个背景颜色,即使在滚动时颜色也必须保持特定顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27994744/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com