iOS - 在UITableViewCell中添加3DTouch功能的正确姿势
2018-04-28 17:25
127 查看
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/samuelandkevin/article/details/80137551
眨眼间,已经有1年没写过iOS的文章了,可能是忙于学习后台知识。最近,因为app有新需求,顺便就把聊天列表模块加入3DTouch功能。在天朝内百度了许多关于iOS UITableViewCell的3DTouch开发资料,发现存在一个通俗的问题,就是在数据源cellForRowAtIndexPath执行registerForPreviewingWithDelegate,当UITableViewCell过多且重复注册的时候,会造成耗cpu性能和滚动不流畅的后果。于是,我踩过坑,总结如下。
二话不说,上菜。
peek图和pop图:
在cellForRowAtIndexPath执行registerForPreviewingWithDelegate的缺点:
每次滑动UITableView,都会注册3DTouch预览功能。因为registerForPreviewingWithDelegate比较耗cpu性能,如果UITableViewCell视图层级多,并且屏幕上显示有多个cell,使劲滑动UITableView,细心的你会发现在xcode里,项目的cpu使用率高达40%。那么,是在哪里和在哪个时机添加registerForPreviewingWithDelegate注册功能为最合适呢。
在UITableView中注册registerForPreviewingWithDelegate的地点和时机:
因为peek和pop都是涉及关于长按手势功能,我就选择在UITableViewCell初始化的时候,contentview添加长按手势,当长按手势为开始状态的时候就回调信息给controller,进行注册功能。在CellChatList.m中,部分代码如: 然后我写了一个YHChatTouch类,主要是封装3DTouch注册功能。在YHChatTouch中,部分代码如: 在聊天列表YHChatListVC类中,调用YHChatTouch注册功能,部分代码如下: cellForRow中注册代理touchDelegate: 代理回调: 只要你掌握了注册3DTouch的时机和位置,有效地提高滚动视图的滑动流畅性能。详情代码,可以参考我的博文附带资源,喜欢的点个like哦:
相关文章推荐
- IOS-表视图中添加搜索功能
- iOS开发中如何给UITableViewCell添加动画
- IOS 为UILabel和UIImageView添加长按复制功能
- iOS 新浪微博客户端Demo实践之(八) 添加图片放大,slide view和定位功能
- iOS中使用本地通知为你的APP添加提示用户功能
- IOS添加手动对焦功能
- 动态添加碎片的正确姿势,防止碎片的重新创建,用add取代replace
- iOS-如何以正确的姿势要求用用去App store评分
- 一个iOS图片选择器的DEMO(实现图片添加,宫格排列,图片长按删除,以及图片替换等功能)
- IOS应用开发09——为自定义UITableViewCell的部分区域添加手势
- IOS 为UILabel和UIImageView添加长按复制功能
- iOS - 给高仿微信添加直播聊天功能
- 为您的Android,iOS等应用添加声波传输功能
- iOS中创建UITableViewCell的正确姿态
- IOS-64-给整个view添加右滑返回功能
- iOS3DTouch功能实现
- iOS 8新功能示例代码,为UILabel添加动画计数功能
- iOS软件开发添加电话、短信、邮件常用功能实现
- unity打包iOS工程包含蓝牙功能,xcode添加事项
- IOS中使用本地通知为你的APP添加提示用户功能