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

背景

iOS系統

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

微信

微信的聯繫人的索引功能比系統索引效果好,前者在滑動索引視圖時,會彈出一個指示器。指示器UI區域較大,展現了當前滑動到的索引位置文案,離用戶滑動的區域有必定的距離,不會被手指遮擋,這個用戶體檢至關好。可是微信索引視圖有一些小bug,這些bug我已經向官方反饋了,如今尚未解決。如下是微信聯繫人索引的小bug:github

  1. 當滑動索引視圖時,另外一根手指去滑動聯繫人列表,聯繫人列表會抖動,其實也不算bug啦,就是體驗上有點小別扭;
  2. 當滑動索引視圖時,另外一根手指去點擊聯繫人列表或者右上角添加聯繫人,會跳轉到另外一個界面,這時返回到聯繫人列表界面,索引視圖徹底卡住不動了,再次滑動聯繫人列表,索引視圖也不會動,指導從新滑動索引視圖。

效果

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

微信GIF圖: 微信

微信GIF圖

toast GIF圖: spa

toast GIF圖

功能及優勢

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

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

使用方法

SCIndexView能夠經過CocoaPods導入,支持iOS7及以上。cdn

  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來鼓勵下我,感謝你們捧場。對象

相關文章
相關標籤/搜索