ios UICollectionView 加载数据后 滑动卡顿问题

Posted xingsmile

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ios UICollectionView 加载数据后 滑动卡顿问题相关的知识,希望对你有一定的参考价值。

最近项目的资源图片变大了,滑动时总是卡顿,在这里用NSOperationQueue解决了一下

.h 文件
@interface CollectionViewCell : UICollectionViewCell
// 赋值
@property (nonatomic, strong) NearRentListModel *listModel;
// 队列
@property (nonatomic, strong) NSOperationQueue *queue;

.m 文件
// 懒加载
- (NSOperationQueue *)queue 
    
    if (!_queue) 
        _queue = (
            NSOperationQueue *q = [[NSOperationQueue alloc]init];
            //设置最大并行操作数为1相当于将queue设置为串行线程
            q.maxConcurrentOperationCount = 1;
            q;
        );
    
    return _queue;

// 调用set方法
- (void)setListModel:(NearRentListModel *)listModel 
    
    _listModel = listModel;
   // 这里展示其他数据(根据项目需要而定)
      
// 开始使用,解决卡顿
if (self.queue.operationCount >= 2) 
        //如果self.queue.operations[0]正在执行的话,不会被强行中止
        [self.queue cancelAllOperations];
    
    NSInvocationOperation *operation = [[NSInvocationOperation alloc]
                                        initWithTarget:self
                                        selector:@selector(loadImg)
                                        object:nil];
    
    [self.queue addOperation:operation];
    


// 调用 展示网络图片
- (void)loadImg
    dispatch_async(dispatch_get_main_queue(), ^
         [_headerImg sd_setImageWithURL:[NSURL URLWithString:_listModel.avatar_path] placeholderImage:MoTo_User_headerimage];
        
        [_img sd_setImageWithURL:[NSURL URLWithString:_listModel.cover_photo] placeholderImage:nil];
    );

 

以上是关于ios UICollectionView 加载数据后 滑动卡顿问题的主要内容,如果未能解决你的问题,请参考以下文章

iOS UiCollectionView - 使用自定义 UiCollectionViewLayout 重新加载数据

iOS 9 UICollectionView 水平重新加载数据不起作用

ios UICollectionView 加载数据后 滑动卡顿问题

iOS UICollectionView横向滑动并且横向加载数据

在 iOS 8 中重新加载时未调用 UICollectionview cellForItemAtIndexPath

从核心数据加载 UICollectionView