背景
iOS系統
iOS系統的UITableView自帶了索引功能,但是實現的功能比較簡單,僅僅支援,滑動索引檢視來達到快速滑動UITableView的功能。
微信
微信的聯絡人的索引功能比系統索引效果好,前者在滑動索引檢視時,會彈出一個指示器。指示器UI區域較大,展示了當前滑動到的索引位置文案,離使用者滑動的區域有一定的距離,不會被手指遮擋,這個使用者體檢相當好。但是微信索引檢視有一些小bug,這些bug我已經向官方反饋了,現在還沒有解決。以下是微信聯絡人索引的小bug:
- 當滑動索引檢視時,另一根手指去滑動聯絡人列表,聯絡人列表會抖動,其實也不算bug啦,就是體驗上有點小別扭;
- 當滑動索引檢視時,另一根手指去點選聯絡人列表或者右上角新增聯絡人,會跳轉到另一個介面,這時返回到聯絡人列表介面,索引檢視完全卡住不動了,再次滑動聯絡人列表,索引檢視也不會動,指導重新滑動索引檢視。
效果
鑑於微信索引方案,從產品上是很好的想法,我就無恥的抄襲了這個產品創意,用程式碼就實現了它,請大家見諒,我就是玩一玩。我也新增了另一種風格,將指示器換成toast的提示方式。
微信GIF圖:
toast GIF圖:
功能及優點
這個索引控制元件SCIndexView實現微信索引的基本功能,也解決了微信索引的小bug,主要功能及優點如下:
- 當滑動UITableView列表時,索引檢視的索引位置會跟著移動;
- 當滑動UITableView列表時,另一根手指再滑動索引檢視,列表滑動事件失效;
- 當滑動索引檢視時,會有指示器或者toast提示當前索引位置;
- 當滑動索引檢視時,不可以點選或者滑動UITableView列表;
- 可以任意定製指示器、toast、索引檢視的大小,文字顏色大小,間距等UI樣式。
使用方法
SCIndexView可以通過CocoaPods匯入,支援iOS7及以上。
- 建立SCIndexViewConfiguration物件,這個物件用來控制索引的UI樣式;
- 建立SCIndexView物件,這個物件是索引檢視本身,初始化方法必須傳入UITableView列表,和SCIndexViewConfiguration物件;
- 將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來鼓勵下我,感謝大家捧場。