当前位置: 首页 > article >正文

iOS 在collectionView顶部无缝插入数据效果

想要达到类似抖音在顶部插入数据的效果,不能用peformbatchupdate, 因为他的回调会有延迟,这里要先调用
[CATransaction setDisableActions:YES]; 关闭动画效果,然后在顶部插入数据,之后在滚动到插入之前的第一个数据的位置,就达到了从视觉上插入的效果
直接上代码

- (void)insertFeedsAtTop:(NSArray<NSObject *> *)instances completion:(void (^)(BOOL))completion
{
    if (instances.count == 0) {
        completion ? completion(YES) : nil;
    }
    dispatch_sync_on_main_queue(^{
        NSMutableArray *privateCardInstances = [self valueForKey:@"dataSource"]];
        if (![privateCardInstances isKindOfClass:[NSMutableArray class]]) {
            return;
        }
        
        [CATransaction setDisableActions:YES];
        NSIndexSet *idxs = [NSIndexSet indexSetWithIndexesInRange:NSMakeRange(0, instances.count)];
        [privateCardInstances insertObjects:instances atIndexes:idxs];
        NSInteger endItem = 0;
        for (CSCardInstance *pIns in instances) {
            endItem += pIns.children.count;
        }
        NSMutableArray *indexPathes = NSMutableArray.new;
        for (NSInteger j = 0; j < endItem; j++) {
            [indexPathes addObject:[NSIndexPath indexPathForItem:j inSection:0]];
        }
        [self.collectionView insertItemsAtIndexPaths:indexPathes];
        [CATransaction setDisableActions:NO];
        if (completion) {
            completion(YES);
        }
    });
}

http://www.kler.cn/a/612008.html

相关文章:

  • Pydantic Schema生成指南:自定义JSON Schema
  • Kubernetes网络插件选择与区别之Calico网络插件详解 上集
  • 《Python实战进阶》第30集:Scikit-learn 入门:分类与回归模型
  • flutter-第1章-配置环境
  • 我的世界模组开发进阶教程——生物群系
  • python深度评测:5大中文长度计算方案终极对决(你的选择可能一直是错的)
  • 【区块链 + 文化版权】慧形AI 知识分身 | FISCO BCOS 应用案例
  • ubuntu20.04安装nvidia-docker(解决有 Release 文件。 N: 无法安全地用该源进行更新,所以默认禁用该源错误)
  • 树莓派(4B)使用教程-小白之路(NO.1)
  • Rust从入门到精通之精通篇:25.过程宏高级应用
  • MySQL 设置允许远程连接完整指南:安全与效率并重
  • 《Python实战进阶》No37: 强化学习入门:Q-Learning 与 DQN-加餐版1 Q-Learning算法可视化
  • 【前端vue】理解VUE前端框架中src下的api文件夹与views文件夹
  • 蓝桥杯(电子类)嵌入式第十一届设计与开发科目模拟试题
  • AI辅助下基于ArcGIS Pro的SWAT模型全流程高效建模实践与深度进阶应用
  • 面试题:RocketMQ 如何保证消息的顺序性
  • 04 单目标定实战示例
  • HarmonyOS之深入解析如何根据url下载pdf文件并且在本地显示和预览
  • ubuntu24 部署vnc server 使用VNC Viewer连接
  • Scala基础语法和简介