gpt4 book ai didi

ios - UICollectionViewFlowLayout子类导致cell消失

转载 作者:行者123 更新时间:2023-12-03 19:47:31 26 4
gpt4 key购买 nike

我正在尝试偏移所选单元格下方所有单元格在 y 轴上的中心。我向 CollectionViewFlowLayout 子类添加了一个名为 extendedCell 的属性,它标记了我应该在其下方偏移其他所有内容的单元格。

- (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect
{
NSArray *attributes = [super layoutAttributesForElementsInRect:rect];
if(!self.extendedCell)
{
return attributes;
}
else
{
return [self offsetCells:attributes];
}
}

- (UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath
{
UICollectionViewLayoutAttributes *attribute = [super layoutAttributesForItemAtIndexPath:indexPath];
if(!self.extendedCell)
{
return attribute;
}
else
{
if(![attribute.indexPath isEqual:self.extendedCell] &&
attribute.center.y >= [super layoutAttributesForItemAtIndexPath:self.extendedCell].center.y)
{
CGPoint newCenter = CGPointMake(attribute.center.x,
attribute.center.y + 180.f);
attribute.center = newCenter;
}

return attribute;
}
}

-(NSArray *)offsetCells:(NSArray *)layoutAttributes
{
for(UICollectionViewLayoutAttributes *attribute in layoutAttributes)
{
if(![attribute.indexPath isEqual:self.extendedCell] &&
attribute.center.y >= [super layoutAttributesForItemAtIndexPath:self.extendedCell].center.y)
{
CGPoint newCenter = CGPointMake(attribute.center.x,
attribute.center.y + 180.0f);
attribute.center = newCenter;
}
}

return layoutAttributes;
}

事实证明,随着底部的细胞消失,途中发生了一些不好的事情。我感觉这与 UICollectionView 内容大小之外的单元格有关,但在生成布局时设置大小无济于事。任何想法如何解决这种消失?

最佳答案

好的,我发现了这个错误。似乎覆盖 -(CGSize)collectionViewContentSize 有帮助。如果任何单元格位于 Collection View 的内容大小之外,它们就会消失。由于内容大小在任何布局属性调用之前就已设置好,并且不允许将单元格放置在它之外,因此 Collection View 只是摆脱了它们。我认为内容大小是基于设置后的单元格属性,事实并非如此。

-(CGSize)collectionViewContentSize
{
if(self.extendedCell)
{
CGSize size = [super collectionViewContentSize];
return CGSizeMake(size.width, size.height + 180);
}
else
{
return [super collectionViewContentSize];
}
}

关于ios - UICollectionViewFlowLayout子类导致cell消失,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14926684/

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