SwiftUI 2.0 实现无限滚动的分页列表(高性能含源码)

本文价值与收获

看完本文后,您将能够作出下面的界面

无限滚动的分页列表

无限滚动的分页列表

实战需求

我们平时构建的应用基本上都是列表类应用,例如待办事项列表、微博、微信朋友圈和视频列表等。这些列表都是可以无限滚动的,那这个功能该如何实现呢。本篇文章将告诉大家个非常简单高效的构建无限滚动List的方法,而且该方法还不会有性能问题。

列表实现目前有两种方法,一种List,另外一种Scrollview。在wwdc20之前,我不太推荐大家使用ScrollView,但是wwdc20对scrollview进行了全面改造,在性能和灵活性上都有很大提高。下面我就给大家制作两版无限分页列表。

实战代码

1、List版

struct EndlessList: View {
  @StateObject var dataSource = ContentDataSource()

  var body: some View {
    List {
      ForEach(dataSource.items) { item in
        Text(item.label)
          .onAppear {
            dataSource.

热门文章

暂无图片
编程学习 ·

dom基础知识笔记

dom:Document Object Model个人认为dom是一种约定,开发者按这种形式写html,浏览器按这种形式解析html
暂无图片
编程学习 ·

vs2017试用期满了无法登陆怎么办

VS2017出现许可证过期解决方法 vs2017是免费社区,但是第一次试用的时候没有登录账户,提示试用期满不能进行操作。 查到有一下几种方法: 1、在帮助栏里输入序列号进行激活,此时必须处于许可证未过期状态进行激活,否则只能退出visual。 2、重新安装vs,对于一部分人来说是有…
暂无图片
编程学习 ·

新能源汽车车载智能终端T-BOX

新能源汽车车载智能终端T-BOX技术解决方案包括:用户端 + 运营后台系统 + 车辆网平台 + 车载终端等总体架构:“端+网”解决方案智能信TBOX终端硬件,TBOX终端与汽车共享、网约及分时租赁商业应用相结合,实现远程开锁,GPS追踪、动力控制管理、闪灯鸣笛寻车等功能。同时,提供…
暂无图片
编程学习 ·

STM32CubeMX5.6.1生成的代码无启动文件

丢失启动文件 使用这个版本的CubeMX,生成的代码里面没有对应的启动文件。编译报错 展开图片,在Drivers/CMSIS文件夹下面,没有启动文件。编译不通过,报错No section matches selector - no section to be FIRST/LAST。//------------------------------------------ 解决方法…
暂无图片
编程学习 ·

[剑指offer]二叉搜索树的后序遍历数列

[剑指offer]二叉搜索树的后序遍历数列 剑指offer-二叉搜索树的后序遍历序列 题目描述 输入一个整数数组,判断该数组是不是某二叉搜索树的后序遍历结果。如果是则返回 true,否则返回 false。假设输入的数组的任意两个数字都互不相同。 参考以下这颗二叉搜索树:5/ \2 6/ \1 …
暂无图片
编程学习 ·

SpringBoot切换不同的实现时,出现nullPointer问题

1,有时候算法需要迭代,相同的接口需要多个实现,自己可以随意切换,接口类:package com.xxx.shortvideo.manager;public interface VideoRecommendedManger {FeedVideoByUserDTO getVideoByUser(FeedVideoByUserReq req);}2, 针对接口有两个实现3,通过配置config类来实现pa…
暂无图片
编程学习 ·

在Eclipse EE上搭建基于Scala文件的Maven项目

在Eclipse EE上搭建基于Scala文件的Maven项目这篇博客是笔者在进行创新实训课程项目时所做工作的回顾。对于该课程项目所有的工作记录,读者可以参阅下面的链接。 注意!这篇博文不会涉及在机器上安装Hadoop,Spark等环境,仅仅是能够在Eclipse EE上搭建基于Scala文件的Maven项…
暂无图片
编程学习 ·

防静电塑料包装

■ 简介防静电袋可以最大程度地保护静电敏感元器件免受潜在静电危害,它们独特的法拉第电笼构造形成“感应罩”效应,以达到对袋内物品的屏蔽和防静电功效,外层耐磨金属涂层和内层乙烯材料,经复杂工艺处理对静电屏蔽保护做到尽善尽美,半透明热封袋型的工艺,可清楚辨认袋内的…
暂无图片
编程学习 ·

webrtc 实现web端对端视频

https://huangxiaoguo.blog.csdn.net/article/details/104229233https://blog.csdn.net/lbc2100/article/details/44563665https://www.oschina.net/question/156697_172887
暂无图片
编程学习 ·

POJ1270 Following Orders(拓扑排序+dfs回溯)

POJ1270 Following Orders(拓扑排序+dfs回溯) Description Order is an important concept in mathematics and in computer science. For example, Zorn’s Lemma states: ``a partially ordered set in which every chain has an upper bound contains a maximal element.’…
暂无图片
编程学习 ·

springboot-shiro

Shiro 根据狂神课程学习 1.1、什么是Shiro?Apache Shiro是一个强大且易用的Java安全框架 执行身份验证、授权、密码和会话管理为什么要使用shiro? 如果你是需要设计RBAC(Role Based Access Control)基础系统,需要编写大量用于权限控制的代码时。那么你需要使用Shiro。因为…
暂无图片
编程学习 ·

千里之行 | 计算机基础要点

第一课:计算机基础要点一. 计算机基本概念1. 计算机是什么?2. 计算要机的组成二. 计算机语言1. 计算机语言的基本概念2. 计算机语言的发展三. 交互方式1. 交互方式的种类2. 文本交互模式的打开方式(Windows系统)3. DOS命令四. 文本文件和字符集1. 文本文件2. 常见字符集五. …
暂无图片
编程学习 ·

二、三层交换机与路由器的工作原理总结

交换原理 转发决策 交换机的转发决策有三种操作:丢弃、转发和扩散。 丢弃:当本端口下的主机访问已知本端口下的主机时丢弃。 转发:当某端口下的主机访问已知某端口下的主机时转发。 扩散:当某端口下的主机访问未知端口下的主机时要扩散。 每个操作都要记录下发包端的源MAC地…
暂无图片
编程学习 ·

SpringBooy集成shiro+cas单点登录

1、引入需要的依赖<dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-cas</artifactId><version>1.3.2</version></dependency><dependency><groupId>org.apache.shiro</groupId><arti…
暂无图片
编程学习 ·

request.getParameter()与request.getSession().getAttribute类型比较

以下内容作为个人学习记录,如果给原作者造成不便,请私信,会立即删除。 区别: getParameter是获取表单提交的数据,或者post和get拼接提交的。获得的类型是String类型的。 request.getSession().getAttribute是获取session中的数据,和session.setAttribute搭配使用。获取的…