滚动时 CollectionView 滞后

Posted

技术标签:

【中文标题】滚动时 CollectionView 滞后【英文标题】:CollectionView lag while scrolling 【发布时间】:2017-12-25 06:00:34 【问题描述】:

先生,我是初学者。我无法理解这一点。我在滚动 collectionView 时面临滞后。我删除了单元格阴影,然后滞后消失了。但我想添加阴影。我的 cellforItem 代码是:

- (UICollectionViewCell *)collectionView:(UICollectionView *)cv cellForItemAtIndexPath:(NSIndexPath *)indexPath
    
        NSString *cellIdentifier = @"cellCollection";
        [self.MainCollectionView registerClass:[CVC_ImageWithLabel class] forCellWithReuseIdentifier:cellIdentifier];
        CVC_ImageWithLabel *customCell = (CVC_ImageWithLabel *)[self.MainCollectionView dequeueReusableCellWithReuseIdentifier:cellIdentifier forIndexPath:indexPath];

        //cell text
        customCell.NameLabel.text = [data_Array objectAtIndex:indexPath.row];
        //cell image
        customCell.CellImage.image=[UIImage imageNamed:[image_Array objectAtIndex:indexPath.row]];
        customCell.CellImage.contentMode = UIViewContentModeScaleAspectFit;

        return customCell;
    

先生,您能帮帮我吗? 我试图添加下面的代码,但没有这样做。

customCell.layer.shouldRasterize = YES;
customCell.layer.rasterizationScale = [UIScreen mainScreen].scale;

【问题讨论】:

在 cellForItem 中添加更多代码 添加了完整的代码先生。 添加这个viewDidLoad [self.MainCollectionView registerClass:[CVC_ImageWithLabel class] forCellWithReuseIdentifier:@"cellCollection"]; 将影子代码添加到单元格文件方法 layoutSubview() 我在 viewWillAppear 中这样做......做了同样的......但仍然落后于阴影 【参考方案1】:

你应该再设置一个图层的属性——shadowPath:

self.layer.shadowRadius = 5;
self.layer.shadowOpacity = 0.5;
self.layer.shadowOffset = CGSizeMake(0, 1);
self.layer.shadowColor = [UIColor blackColor].CGColor;
self.layer.shadowPath = [UIBezierPath bezierPathWithRoundedRect: self.bounds cornerRadius: self.layer.shadowRadius].CGPath;

此路径定义用于构造图层阴影的轮廓,而不是使用图层的合成 Alpha 通道。使用此属性显式指定路径通常会提高渲染性能

【讨论】:

是的,它有所改善。谢谢。【参考方案2】:

将阴影添加为图像,这样可以提高性能。您可以使用图像切片来帮助缩放图像。

【讨论】:

以上是关于滚动时 CollectionView 滞后的主要内容,如果未能解决你的问题,请参考以下文章

使用嵌套适配器垂直滚动时出现滞后问题 | IGListKit

滚动时 UICollectionView 的滞后

平移和滚动放大的collectionView xcode

UICollectionView 滚动 SWIFT 滞后/缓慢

NSTableView 在滚动时非常滞后

iOS 集合视图滚动滞后