uitableview加载MySQL数据_UITableView 动态预加载

静态临界值方案

设置当前初始化页码为 page = 1;

设置一个初始化临界值 threshold,threshold 为小于 1大于 0 的浮点数

Threshold = 0.7;

监听列表正在滚动的方法 'scrollViewDidScroll:',并取得滚动视图底边对应偏移量 currentOffsetY

currentOffSetY = scrollView.contentOffset.y + scrollView.frame.size.height;

使用滚动视图的当前底边偏移量除以可滑动的总高度得出值 ratio ,将 ratio 与 newThreshold 做对比,若 ratio 大于等于 newThreshold 则触发预加载

// 总的可滑动区域

totalContentSizeY = scrollView.contentSize.height;

// 取得当前滑动视图的底边的偏移量

ratio = currentOffSetY/totalContentSizeY;

// 比较临界值大小

if (ratio >= Threshold) {

// 执行预加载数据。。。。

}

设计此预加载的原因在于当前页数越多,totalContentSizeY 值就越大,如果临界值写死为 threshold ,那么就会造成最后是整体数据查看的比例为 threshold 而不是最后页的数据查看的比例为 threshold,就会导致新加载的数据都还没有看到,应用程序又开始加载下一页数据了,页数愈多,弊端愈明显。

根据静态临界值举个例子,

page(页码)

total(总数据条数)

current(当前列表上展示的最后一条数据)

threshold(临界值)

1

10

7

0.7

2

20

14

0.7

3

30

21

0.7

4

40

28

0.7

5

50

35

0.7

动态临界值方案

设置当前初始化页码为 page = 1;

设置一个初始化临界值 threshold,threshold 为小于 1大于 0 的浮点数

Threshold = 0.7;

动态临界值 newThreshold 公式

newThreshold = threshold + (1-threshold)(page - 1)/page;

监听列表正在滚动的方法 'scrollViewDidScroll:',并取得滚动视图底边对应偏移量 currentOffsetY

currentOffSetY = scrollView.contentOffset.y + scrollView.frame.size.height;

使用滚动视图的当前底边偏移量除以可滑动的总高度得出值 ratio ,将 ratio 与 newThreshold 做对比,若 ratio 大于等于 newThreshold 则触发预加载

// 动态临界值

// 总的可滑动区域

totalContentSizeY = scrollView.contentSize.height;

// 取得当前滑动视图的底边的偏移量

ratio = currentOffSetY/totalContentSizeY;

// 比较临界值大小

if (ratio >= newThreshold) {

// 执行预加载数据。。。。

}

根据动态临界值举个例子

page(页码)

total(总数据条数)

threshold(临界值)

newthreshold(动态临界值)

current(当前列表上展示的最后一条数据)

1

10

0.7

0.7

7

2

20

0.7

0.85

17

3

30

0.7

0.88

26.4

4

40

0.7

0.9225

36.9

5

50

0.7

0.94

47

总结

静态临界值方案,可以看出用户滑动到整体数据的 70% 就触发预加载

动态临界值方案,可以看出用户始终是滑动到倒数第四条数据才触发预加载

如果列表采用预加载方案,采用动态临界值方案会更优

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值