iOS UITableView左滑操作功能的實現(iOS8-11)


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在蘋果應用商店中的曝光率。

 

 

 

 

 

 

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM