掘友等级
获得徽章 0
#iOS知识小集#「 解决 tableview 刷新闪一下或抖动的问题 」
我们知道 tableview 刷新有分全局刷新和指定区域刷新。
- 全局刷新 - (void)reloadData;
- 指定区域刷新有以下两个方法。
```
- (void)reloadRowsAtIndexPaths:(NSArray<NSIndexPath *> *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation NS_AVAILABLE_IOS(3_0);
- (void)reloadSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation NS_AVAILABLE_IOS(3_0);
```
tableview 或者是 collectionview,reload 时默认会有一个隐式的 Fade 动画,有时视觉上会有闪一下的情况。指定区域刷新时,只要将 UITableViewRowAnimation 设为 UITableViewRowAnimationNone 即可取消隐式动画。
那么全局刷新时,该如何取消隐式动画?
方法一:
如果你的 tableview 的行高是根据数据自适应的,那么在设置完 estimatedRowHeight 后,在需要 reloadData 的地方加上。
```
[self.tableView beginUpdates];
[self.tableView endUpdates];
```
(ps: 以上方法用于 tableview 刷新时因预估行高和实际行高不一致情况下抖动的问题,有些人视觉上可能也觉得会闪一下。)
方法二:
使用 UIView 类方法去取消隐式动画,在 block 回调里去 reloadData。该方法对 collectionview 刷新同样有效。
```
+ (void)performWithoutAnimation:(void (NS_NOESCAPE ^)(void))actionsWithoutAnimation NS_AVAILABLE_IOS(7_0);
```
参考链接:t.cn
考考大家一个问题:为什么iOS的OC类中可以通过category添加扩展方法,却无法添加实例属性?
大家好!我是蚂蚁金服 mPaaS(移动研发平台)团队(掘金主页:t.cn)的技术专家--凝睇,目前主要负责 mPaaS 产品服务端研发,在蚂蚁工作 7 年多。这些年的工作基本都围绕着 Java,期间主要负责过支付宝手机 WAP 主站,alipass (支付宝卡券),客户端数据同步平台(Sync)的研发,并带这些产品参与过多次双 11、双 12 和支付宝春节红包大促活动。
期间 Sync 做了 3 年多,目前蚂蚁体系内每天会有几百亿条业务数据通过 Sync 同步到各个客户端(支付宝、支付宝香港版、口碑、口碑商户版、聚宝等等)。Sync 属于客户端网络组件,因此天天跟网络的同学泡在一起,对网络有一丁点了解,如果有什么「客户端网络」方面犄角旮旯的问题,我解答不了的,我可以找到人来解答!
目前在 mPaaS 项目中主要负责将蚂蚁体系内已成熟的核心组件输出到蚂蚁国际和蚂蚁金融云(包括:公有云、专有云、私有云),包括移动网关、Push 推送通知、智能发布平台等已经输出到蚂蚁国际各大站点,还有很多银行和出行领域 App,包括 12306、上海地铁、广发银行、西安银行等。因此在「构建平台级组件体系」方面(比如「移动网关」、「Push 推送通知」、「智能发布」、「数据分析」、「Sync 数据同步」等)的具体实践,如果你们有问题或者感兴趣的话题,说不定也能多说上几句。
工作之外,我上学就在杭州,在浙江工商大学念的本科,毕业后开始做 Java 开发+一点点 JS +一点点数据库。工作 2 年后进入的支付宝,基本就只干 Java 了。
进支付宝 2 年后脑子一热发了个 feng,又在浙大考了一个 MBA(本科是信息管理与信息系统,管理学学士,也算科班管理学出身吧!?),接着又赶上支付宝 All in Mobile,所以期间 3 年几乎完全没有周末!So……996、997 什么的,那还真不是什么事儿!
个人兴趣嘛,主要是打球!初中到现在,腿残之外一直有打,虽然球技一般,但状态保持还不错,20 年忠实湖蜜,客观看球,不黑人,望隔壁邻居轻喷。OK,先这些!有对其他感兴趣的,比如打王者什么的,也可深入交流!上面带「」都可问。
我会在 2019.01.08 - 01.10 回复你的提问,欢迎来交流。也欢迎关注我们的公众号获取最新技术干货:ant_mpaas