环信通讯录右侧存在间隙的解决办法

解决存在间隙的问题

环信即时通讯v3.2.3版本中,通讯录的右侧会存在间隙


在Demo中找通讯录类,在 -(void)viewDidLoad 中添加如下代码:

self.tableView.sectionIndexColor = [UIColor lightGrayColor];
self.tableView.sectionIndexBackgroundColor = [UIColor clearColor];

效果如下:

FEFA9605-A909-45EE-A932-5BB7C8DD5D31.png

这样tableView就不会由于索引的出现存在间隙了。

但出现了另一个问题,就是搜索框会变得不对称


B9535BFD-1096-4A94-AFD1-F1C783455C00.png

这个问题还未解决。

设置显示全部的索引

通讯录中搜索方法 sectionIndexTitlesForTableView

可知索引是放置在数组 self.sectionTitles

搜索self.sectionTitles

找到 - (void)_sortDataArray:(NSArray *)buddyList此方法应该是设置通讯录中好友的数据

self.sectionTitles 已经添加 a-z和#

//建立索引的核心, 返回27,是a-z和#
UILocalizedIndexedCollation *indexCollation = [UILocalizedIndexedCollation currentCollation];
[self.sectionTitles addObjectsFromArray:[indexCollation sectionTitles]];

在此方法中继续读,会发现,通讯录列表中不存在的首字母索引会被移除掉

10FF108E-1759-425D-8C03-375584447352.png

所以,新建一个数组A来保存全部索引,然后在 sectionIndexTitlesForTableView 中 返回数组A即可

A00DACB9-066C-4016-A3DF-81F95D98B0D7.png

- (void)_sortDataArray:(NSArray *)buddyList

C02E604B-918C-431F-B6CD-C19C1F302789.png

- (NSArray *)sectionIndexTitlesForTableView:(UITableView *)tableView

效果如下


982B415D-B41C-4049-9FE8-E8E428D7F051.png

推荐阅读更多精彩内容

  • 概述在iOS开发中UITableView可以说是使用最广泛的控件,我们平时使用的软件中到处都可以看到它的影子,类似...
    liudhkk阅读 8,578评论 3 38
  • 聊天控制器(ChatViewController)界面搭建 14.聊天界面-工具条排版 1)搭建界面 添加聊天控制...
    夜空已沉寂阅读 2,714评论 0 4
  • 哦吼吼,又研究了几天,把FMDB这个封装好的数据库搞定了,写了个简单的例子,基于FMDB的添删改查操作,界面很一般...
    lichengjin阅读 387评论 0 0
  • *7月8日上午 N:Block :跟一个函数块差不多,会对里面所有的内容的引用计数+1,想要解决就用__block...
    炙冰阅读 2,323评论 1 14
  • 今晚流氓兔推荐的歌曲是《Fade》,Alan Walker.纯音乐版的,喜欢。 昨晚凌晨四点多的时候我做了一个特别...
    佐恬阅读 163评论 0 0