gpt4 book ai didi

ios - uicollectionView 中每 4 个 block 有另一种背景颜色

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

我有一个带有单元格列表collectionView。每个 cell 都有一个 backgroundColor。所以应该是这样的。

  • 单元格 1 --> 红色
  • 单元格 2 --> 绿色
  • 单元格 3 --> 橙色
  • 单元 4 --> 黄色
  • 单元格 5 --> 红色
  • 单元 6 --> 绿色
  • 单元格 7 --> 橙色
  • 单元格 8 --> 黄色
  • 单元格 9 --> 红色
  • 单元格 10 --> 绿色
  • 单元格 11 --> 橙色
  • 单元 12 --> 黄色

目前我正在这样做。我已经在我的 ViewController 和我的 cellForItemAtIndexPath 中声明了一个 private int 我这样做了。

- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath {
// MagazineCollectionViewCell *cell = (MagazineCollectionViewCell *)[cv dequeueReusableCellWithReuseIdentifier:@"MagazineCollectionViewCell " forIndexPath:indexPath];
ReisCategorieCell *cell = [cv dequeueReusableCellWithReuseIdentifier:@"ReisCategorieCell" forIndexPath:indexPath];
cell.delegationListener = self;

Reiscategorie *category = [arrCategories objectAtIndex:indexPath.row];

cell.reisCategorie = category;

cell.lblTitle.font = [UIFont fontWithName:@"Dosis-Medium" size:35];
cell.lblDescription.font = [UIFont fontWithName:@"Dosis-Medium" size:15];
[cell.btnAanbod.titleLabel setFont:[UIFont fontWithName:@"Dosis-Medium" size:23]];

cell.lblTitle.textColor = [UIColor whiteColor];
cell.lblDescription.textColor = [UIColor whiteColor];
[cell.btnAanbod.titleLabel setTextColor:[UIColor whiteColor]];
cell.btnAanbod.titleLabel.textColor = [UIColor whiteColor];

countBackground++;
if(countBackground>4){
countBackground = 0;
}
if (countBackground == 1) {
cell.contentView.backgroundColor = [UIColor aslRed];
cell.btnAanbod.backgroundColor = [UIColor aslBrown];
}else if (countBackground == 2){
cell.contentView.backgroundColor = [UIColor aslBrown];
cell.btnAanbod.backgroundColor = [UIColor aslGray2];
}else if (countBackground == 3){
cell.contentView.backgroundColor = [UIColor aslGray];
cell.btnAanbod.backgroundColor = [UIColor aslBrown];
}else if (countBackground == 4){
cell.contentView.backgroundColor = [UIColor aslGray2];
cell.btnAanbod.backgroundColor = [UIColor aslBrown];
}

if([category.cat_name isEqualToString:@"Lapland"]){
cell.btnLapland.hidden = NO;
}else{
cell.btnLapland.hidden = YES;
}
[cell.btnAanbod setTitle:NSLocalizedString(@"btnAanbod", nil) forState:UIControlStateNormal];
cell.lblTitle.text = category.cat_name;
cell.lblDescription.text = category.cat_description;
return cell;
}

如果您滚动缓慢,这会起作用。但是,如果您快速滚动,颜色就会混淆。那么有人可以帮我解决这个问题吗?

最佳答案

您需要依靠 indexPath.row 而不是使用手动细胞计数。它不起作用,因为当您滚动 UICollectionView 时,您的单元格会被重复使用。

假设您的 UICollectionView 中有一个部分,您可以使用类似这样的东西来确定每个单元格的颜色:

switch (indexPath.row % 4) {
case 0:
// yellow
break;
case 1:
// orange
break;
case 2:
// green
break;
case 3:
// red
break;
}

我还没有测试过这个逻辑,但这个通用方法应该可行。

关于ios - uicollectionView 中每 4 个 block 有另一种背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25075873/

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