gpt4 book ai didi

ios - 更改 uicollectionviewcell 的顺序

转载 作者:行者123 更新时间:2023-11-29 12:25:47 24 4
gpt4 key购买 nike

我正在尝试将序列更改为在 collectionview 中呈现的单元格。默认情况下,在垂直布局中,collectionview 单元格显示在

1 2 3
4 5 6
7 8 9

我想做的是通过以下方式改变这个序列

1  2  3
6 5 4 <----- this order is reversed
7 8 9
12 11 10 <----- this order is reversed

谁能告诉我如何实现这种行为。

到目前为止,我已经实现了 UICollectionViewFlowLayout 并试图操纵它的方法但没有成功

注意:所有项目只能在一个部分加载

最佳答案

我通过继承 UICollectionViewLayout 找到了解决方案,并为每个项目计算了所需的框架。在 prepareLayout 方法中。

以下代码仍有改进的余地。

-(void)prepareLayout{
NSInteger itemCount = [self.collectionView numberOfItemsInSection:0];
NSMutableDictionary *layoutAttr = [NSMutableDictionary dictionary];
CGFloat y=0,x=0;
for (int i = 0; i<itemCount; i++) {
NSIndexPath *indexPath = [NSIndexPath indexPathForItem:i inSection:0];
UICollectionViewLayoutAttributes *attributes = [UICollectionViewLayoutAttributes layoutAttributesForCellWithIndexPath:indexPath];
CGRect frame;
if (indexPath.row == 0) {
x= 0;
y=0;
frame = CGRectMake(x, y, self.itemSize.width, self.itemSize.height);
x += self.itemSize.width;
}else if (indexPath.row % 2 == 0 ) {
y += self.itemSize.height;
x -=self.itemSize.width;
frame = CGRectMake(x, y, self.itemSize.width, self.itemSize.height);
if (x <= 0) {
x += self.itemSize.width;
}else{
x -= self.itemSize.width;
}
}else{
frame = CGRectMake(x, y, self.itemSize.width, self.itemSize.height);
x += self.itemSize.width;
}
attributes.frame=frame;

attributes.zIndex = i;
layoutAttr[indexPath] = attributes;
}
layoutAttributes=layoutAttr;
}

关于ios - 更改 uicollectionviewcell 的顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29164842/

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