WeTest 導讀
本文主要是介紹下iOS 11系統及iOS 11之前的系統在實現左滑操作功能上的區別,及如何自定義左滑的標題顏色、字體大小。
一、左滑操作功能實現
1、如果左滑的時候只有一個操作按鈕,可以使用如下三個delegate方法來實現:
2、如果左滑有一個或多個操作按鈕,iOS8-10 可使用如下兩個delegate
3、iOS 11之后,tableView的delegate增加了兩個方法,用來取代editActionsForRowAtIndexPath方法,如下:
在2和3中,如果是需要適配iOS 11之前的版本,以上三個方法都需要實現。
4、上面1.2和1.3中實現的方法的區別
體驗上的不同就是當左滑只有一個button時,iOS 11中可以一直左滑,滑到一定程度時,會執行點擊按鈕的操作,iOS 11之前的不會。
iOS 11之前如果想增大button區域,可通過在標題前后加空格的方式,但iOS 11不行,加空格無效,button大小固定,超過4個字時換行顯示。
二、左滑操作自定義標題顏色、字體
因為系統對左滑出的按鈕只提供了3個可設置的屬性:title、backgroundColor、image,如果使用自定義的titleColor和font,就需要自己來實現了。實現的思想是hook系統實現,但鑒於UITableView的view層級結構在iOS 11中有所改變,所以iOS8-10和iOS11的實現有所不同,以下分別給出。
考慮到代碼的可復用性,自定義左滑操作的字體大小和顏色的代碼不寫在viewController中,而是寫在UITableView和UITableViewCell的Category中,對外提供editActionTitleColor和editActionTitleFont屬性來設置顏色和大小,需要使用自定義顏色和字體時只需要設置一下這兩個屬性即可。
1、iOS 8-10 設置標題顏色和字體
左滑操作后,UITableView的層級結構如下圖:
由上圖可知,左滑的操作按鈕是在UITableViewCell的子view,所以我們可以在UITableViewCell的category中hook掉layoutSubviews方法,找到UITableViewCellDeleteConfirmationView的子view button,設置字體顏色和大小。
代碼如下:
2、 iOS 11 設置標題顏色和字體
左滑操作后,UITableView的層級結構如下圖:
由上圖可知,左滑的操作按鈕是在UITableView的子view,所以我們可以在UITableView的category中hook掉layoutSubviews方法,找到UISwipeActionPullView的子view button,設置字體顏色和大小。
代碼如下:
三、遇到的問題及原因分析
1、問題是iOS 11上設置顏色有延遲,顏色有一個明顯的跳變,從系統默認色跳轉到我設置的顏色
有問題的代碼如下:
2、問題原因分析
當左滑一個cell后,直接操作左滑另一個cell,這個時候tableView上會有兩個UISwipeActionPullView,此時tableView的部分view層級如下圖所示:
而上面的代碼,在__findSwipActionButton方法中,找到其中一個UISwipeActionPullView上面的button就直接返回了,沒有設置第二個UISwipeActionPullView的button的顏色,導致顯示了系統默認色。
3、解決方法
將以上有問題的代碼修改為以下代碼:找出所有的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在蘋果應用商店中的曝光率。