滚动时 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