我需要实现一个象棋风格的网格视图,以显示某些径向进度条。
我使用了一些低效的算法来创建这个网格,因为UiCollectionView不使用行和列,它依然可以工作。但是当用户将集合滚动到极限时,集合的“行”从屏幕上消失,当用户释放屏幕并重新出现UICollectionViewCell时,它们会切换颜色。
我知道切换是通过BOOL值实现的,但我不知道如何解决这个问题。
以下是我的算法(我有两种不同的UICollectionViewCells,每种颜色一个)
![enter image description here](https://istack.dev59.com/PaFp8m.webp)
我知道切换是通过BOOL值实现的,但我不知道如何解决这个问题。
以下是我的算法(我有两种不同的UICollectionViewCells,每种颜色一个)
- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath{
static NSString *identifier = @"Cell";
static NSString *identifierPair = @"CellPair";
UICollectionViewCell *cell ;
UILabel *title;
//...Creating the circle progress bar....
if ((indexPath.item % 2) == 0) {
if (isPair) {
cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifierPair forIndexPath:indexPath];
isPair = NO;
title = (UILabel *)[cell viewWithTag:12];
}
else
{
cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];
isPair = YES;
title = (UILabel *)[cell viewWithTag:11];
}
}
else {
if (isUneven) {
cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifierPair forIndexPath:indexPath];
isUneven = NO;
title = (UILabel *)[cell viewWithTag:12];
}
else
{
cell = [collectionView dequeueReusableCellWithReuseIdentifier:identifier forIndexPath:indexPath];
isUneven = YES;
title = (UILabel *)[cell viewWithTag:11];
}
}
//...Setting the name to the cell....
return cell;
}