做者:sonia,腾讯移动客户端开发 工程师
商业转载请联系腾讯WeTest得到受权,非商业转载请注明出处。
原文连接:http://wetest.qq.com/lab/view/366.htmlhtml
本文主要是介绍下iOS 11系统及iOS 11以前的系统在实现左滑操做功能上的区别,及如何自定义左滑的标题颜色、字体大小。ios
一、若是左滑的时候只有一个操做按钮,可使用以下三个delegate方法来实现:数组
二、若是左滑有一个或多个操做按钮,iOS8-10 可以使用以下两个delegate工具
3、iOS 11以后,tableView的delegate增长了两个方法,用来取代editActionsForRowAtIndexPath方法,以下:测试
在2和3中,若是是须要适配iOS 11以前的版本,以上三个方法都须要实现。字体
四、上面1.2和1.3中实现的方法的区别优化
体验上的不一样就是当左滑只有一个button时,iOS 11中能够一直左滑,滑到必定程度时,会执行点击按钮的操做,iOS 11以前的不会。spa
iOS 11以前若是想增大button区域,可经过在标题先后加空格的方式,但iOS 11不行,加空格无效,button大小固定,超过4个字时换行显示。视频
由于系统对左滑出的按钮只提供了3个可设置的属性:title、backgroundColor、image,若是使用自定义的titleColor和font,就须要本身来实现了。实现的思想是hook系统实现,但鉴于UITableView的view层级结构在iOS 11中有所改变,因此iOS8-10和iOS11的实现有所不一样,如下分别给出。htm
考虑到代码的可复用性,自定义左滑操做的字体大小和颜色的代码不写在viewController中,而是写在UITableView和UITableViewCell的Category中,对外提供editActionTitleColor和editActionTitleFont属性来设置颜色和大小,须要使用自定义颜色和字体时只须要设置一下这两个属性便可。
一、iOS 8-10 设置标题颜色和字体
左滑操做后,UITableView的层级结构以下图:
由上图可知,左滑的操做按钮是在UITableViewCell的子view,因此咱们能够在UITableViewCell的category中hook掉layoutSubviews方法,找到UITableViewCellDeleteConfirmationView的子view button,设置字体颜色和大小。
代码以下:
二、 iOS 11 设置标题颜色和字体
左滑操做后,UITableView的层级结构以下图:
由上图可知,左滑的操做按钮是在UITableView的子view,因此咱们能够在UITableView的category中hook掉layoutSubviews方法,找到UISwipeActionPullView的子view button,设置字体颜色和大小。
代码以下:
一、问题是iOS 11上设置颜色有延迟,颜色有一个明显的跳变,从系统默认色跳转到我设置的颜色
有问题的代码以下:
二、问题缘由分析
当左滑一个cell后,直接操做左滑另外一个cell,这个时候tableView上会有两个UISwipeActionPullView,此时tableView的部分view层级以下图所示:
而上面的代码,在__findSwipActionButton方法中,找到其中一个UISwipeActionPullView上面的button就直接返回了,没有设置第二个UISwipeActionPullView的button的颜色,致使显示了系统默认色。
三、解决方法
将以上有问题的代码修改成如下代码:找出全部的UISwipeActionPullView,返回UISwipeActionPullView的button数组,对button数组进行设置字体颜色和大小,这个数组最多有两个元素,由于左滑出下一个cell时,上一个cell会逐渐消失,当此cell左滑操做完成时,上一个左滑的cell也会完成消失。
解决后的代码如二(2)的示例代码。
腾讯WeTest iOS预审工具
为了提升IEG苹果审核经过率,腾讯专门成立了苹果审核测试团队,打造出iOS预审工具这款产品。通过1年半的内部运营,腾讯内部应用的iOS审核经过率从平均35%提高到90%+。
现将腾讯内部产品的过审经验,以线上工具的形式共享给各位。在WeTest腾讯质量开放平台上能够在线使用。
点击 http://wetest.qq.com/product/ios 便可当即体验!
若是使用当中有任何疑问,欢迎联系腾讯WeTest企业QQ:800024531
iOS预审服务
【扫描工具】上传IPA包、图片、视频、应用描述便可进行测试; 多维度自动扫描提审材料的被拒风险;1小时内反馈全面的扫描报告。
【专家预审】腾讯专家为您遍历App全部功能模块;全面暴露App内容被拒风险;跟进问题直至上线(需提供官方拒绝邮件)。
【专家咨询】资深预审专家一对一服务; 咨询时间灵活可选,按需购买;有的放矢解 决审核问题。
【ASO优化】专业团队多维度深度剖析App的ASO现状;围绕App目标用户群筛选高 度关联的关键词;帮助提高App在苹果应用商店中的曝光率。