超簡單實現iOS列表的索引功能

TalkingJourney發表於2019-03-01

背景

iOS系統

iOS系統的UITableView自帶了索引功能,但是實現的功能比較簡單,僅僅支援,滑動索引檢視來達到快速滑動UITableView的功能。

微信

微信的聯絡人的索引功能比系統索引效果好,前者在滑動索引檢視時,會彈出一個指示器。指示器UI區域較大,展示了當前滑動到的索引位置文案,離使用者滑動的區域有一定的距離,不會被手指遮擋,這個使用者體檢相當好。但是微信索引檢視有一些小bug,這些bug我已經向官方反饋了,現在還沒有解決。以下是微信聯絡人索引的小bug:

  1. 當滑動索引檢視時,另一根手指去滑動聯絡人列表,聯絡人列表會抖動,其實也不算bug啦,就是體驗上有點小別扭;
  2. 當滑動索引檢視時,另一根手指去點選聯絡人列表或者右上角新增聯絡人,會跳轉到另一個介面,這時返回到聯絡人列表介面,索引檢視完全卡住不動了,再次滑動聯絡人列表,索引檢視也不會動,指導重新滑動索引檢視。

效果

鑑於微信索引方案,從產品上是很好的想法,我就無恥的抄襲了這個產品創意,用程式碼就實現了它,請大家見諒,我就是玩一玩。我也新增了另一種風格,將指示器換成toast的提示方式。

微信GIF圖:

微信GIF圖

toast GIF圖:

toast GIF圖

功能及優點

這個索引控制元件SCIndexView實現微信索引的基本功能,也解決了微信索引的小bug,主要功能及優點如下:

  1. 當滑動UITableView列表時,索引檢視的索引位置會跟著移動;
  2. 當滑動UITableView列表時,另一根手指再滑動索引檢視,列表滑動事件失效;
  3. 當滑動索引檢視時,會有指示器或者toast提示當前索引位置;
  4. 當滑動索引檢視時,不可以點選或者滑動UITableView列表;
  5. 可以任意定製指示器、toast、索引檢視的大小,文字顏色大小,間距等UI樣式。

使用方法

SCIndexView可以通過CocoaPods匯入,支援iOS7及以上。

  1. 建立SCIndexViewConfiguration物件,這個物件用來控制索引的UI樣式;
  2. 建立SCIndexView物件,這個物件是索引檢視本身,初始化方法必須傳入UITableView列表,和SCIndexViewConfiguration物件;
  3. 將SCIndexView索引檢視新增到UITableView列表檢視的父檢視之中,再設定索引檢視的資料來源。
SCIndexViewConfiguration *indexViewConfiguration = [SCIndexViewConfiguration configuration];
SCIndexView *indexView = [[SCIndexView alloc] initWithTableView:self.tableView configuration:indexViewConfiguration];
indexView.translucentForTableViewInNavigationBar = self.translucent;
[self.view addSubview:indexView];
indexView.dataSource = indexViewDataSource;
複製程式碼

結束

以上就是SCIndexView的內容,希望大家能多多提供一些意見和建議。如果大家有什麼想法的話,可以向我反饋。如果大家喜歡的話,也可以通過star來鼓勵下我,感謝大家捧場。

相關文章