UITableView之局部刷新的正确使用姿势

 我来答
新科技17
2022-07-04 · TA获得超过5911个赞
知道小有建树答主
回答量:355
采纳率:100%
帮助的人:75.3万
展开全部

苹果提供了较为丰富的tableView数据源操作方法,想必大家早已是信手拈来.
使用这些方法不仅可以精细的刷新固定的cell,还可以有选择的使用一些动画,相较而言, reloadData 则暴力直接了许多.

然而,当我们使用到这些局部刷新的动画时,往往可以发现被刷新的cell会与另一个相同的cell进行交替.

当执行相关的局部操作时,系统会通过tableView的数据源方法来获取进行交替动画的cell.

值得注意的是即便使用的动画枚举是 UITableViewRowAnimationNone ,进行交替的cell也依然会被获取或创建.

如果只用来做普通的数据展示,这样重复创建倒也没什么大问题,但是 如果被刷新的cell中有类似播放视频的功能时 ,就需要注意,如果你使用的播放器是多例,那么在刷新操作时由于多获取了一个播放器cell,那么就会导致出现两个音源的问题.而如果你使用的播放器是单例,那么就需要考虑对于AVPlayerLayer或相关UI的处理.

move 相关的方法,由于本身就是通过已存在或将要显示的cell来进行交换动画( 纵向 ),所以不会再特意创建执行交替动画的cell.

UITableViewRowAnimation 这个枚举标示了多种动画样式,在一般情况下使用相应的枚举值,都会得到我想要的效果.
然而,当你使用了 UITableViewRowAnimationNone 这个枚举,并且被刷新的cell有高度和数量的变化时,这时tableView还是会展现一个动画效果.
如果你想禁用这种"隐式动画",可以暂时禁用动画效果达到目的.

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式