首先看一下微信时间的聊天界面:
可以看到并非每一条消息都显示发送时间,其显示具有一定的规则
微信时间聊天时间显示规则:
- 当天的消息,以每5分钟为一个跨度顯示时间;
- 消息超过1天、小于1周显示为“星期 消息发送时间”;
- 消息大于1周,显示为“日期 消息发送时间”
(聊天界面可以利用UITableView来实現,其中的每一条消息都可以看作一个个的UITableViewCell只不过每个Cell需要自定义,具体实现方法这里就不多说了)
简单起见,假定每条消息有以下幾个属性:
1、将UITableView数据源中的数据按时间先后顺序排序
//按字段将数组进行升序或降序排列
2、计算每条消息与上一条显示时间的消息的间隔时間
定义变量lastVisibleTime为排序后的数据源中的第一条消息的时间(第一条消息一定显示时间)依次计算后面每条消息与lastVisibleTime的间隔时间,如果大于等于5汾钟则标记该条消息的“isTimeVisible”属性值为true,并将其发送时间赋值给lastVisibleTime以此类推。
//计算每条消息是否显示时间
* 计算两日期之间时间之差