gpt4 book ai didi

ios - 滚动时奇怪的消失项目

转载 作者:可可西里 更新时间:2023-11-01 03:19:16 24 4
gpt4 key购买 nike

预设,

我有 collectionViewFlowLayout 子类

- (BOOL)shouldInvalidateLayoutForBoundsChange:(CGRect)newBounds {
return YES;
}

- (NSArray<UICollectionViewLayoutAttributes *> *)layoutAttributesForElementsInRect:(CGRect)rect {
NSArray *arr = [super layoutAttributesForElementsInRect:rect];
BBLog(@"ARRA:%@", arr);
for (UICollectionViewLayoutAttributes *attr in arr) {
if (CGAffineTransformIsIdentity(attr.transform)) {
attr.transform = CGAffineTransformMakeRotation((CGFloat)M_PI);
}
}

return arr;
}

CollectionView 旋转到上下滚动

 self.collectionView.transform = CGAffineTransformMakeRotation((CGFloat)M_PI);

但即使只是使用原生的 collectionViewFlowLayout 而没有子类化,git 也会出现这个错误

问题

我在聊天中有两条消息和更多消息,但是当滚动到底部(通常是顶部)时第二条消失了。

给定矩形的 layoutAttributesForElementsInRect 返回两个 indexPaths 0-0 和 0-1 的两个属性,但是委托(delegate)方法

- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath

只为 indexPath 0-0 调用

这里是图片

TopScroll enter image description here

更新所以我找到了为什么会这样——这行代码

attr.transform = CGAffineTransformMakeRotation((CGFloat)M_PI);

看是否去掉变换

enter image description here

最佳答案

我不完全确定,但我认为,当您对 UICollectionViewFlowLayout 进行子类化时,您不应该直接修改属性,而是复制属性,修改它并返回它。

顶部语句的简短解释:您必须继承 UICollectionViewFlowDelegate(UICollectionViewDelegateFlowLayout 的父类),而不是创建自己的属性并根据需要修改它们,但这将需要实现更多的自定义逻辑。

还要查看您是否在控制台中收到任何错误或警告。

检查这个问题:Warning: UICollectionViewFlowLayout has cached frame mismatch for index path 'abc'

希望我至少能帮上一点忙。

关于ios - 滚动时奇怪的消失项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34877798/

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