如何在 JSQMessagesViewController 中显示消息日期

How to show message date in JSQMessagesViewController

我正在尝试制作一个聊天应用程序,并且我正在使用 JSQMessagesViewController 库。 我的聊天视图显示所有消息及其日期和时间,但我在这个库中遇到了一些小问题。 我的问题是我只想显示消息日期一次。 认为: 昨天日期包含 10 条消息 今天日期包含 15 条消息

我只想显示这些消息的单个日期,而不是每条消息的重复日期

使用此方法来执行此操作。

func collectionView(collectionView: JSQMessagesCollectionView, attributedTextForCellTopLabelAtIndexPath indexPath: NSIndexPath) -> NSAttributedString? { 

如果日期与之前的消息日期不同,您必须检查消息日期 return 日期格式,否则 return 无。

那么您需要确定邮件是否是当天的第一封邮件。然后 return 所有其他人都为零,直到新的一天。

我创建了一个函数来确定我的消息是否是那个人最先发送的。看起来像这样

func firstMessageOfTheDay(indexOfMessage: NSIndexPath) -> Bool { 
  let messageDate = messages[indexOfMessage.item].date
  guard let previouseMessageDate = messages[indexOfMessage.item - 1].date else {
    return true // because there is no previous message so we need to show the date
  }
    let day = Calendar.current.component(.day, from: messageDate)
    let previouseDay = Calendar.current.component(.day, from: previouseMessageDate)
    if day == previouseDay {
        return false
    } else {
        return true
    }
}

然后在适当的函数中调用它。如果您有任何其他问题,希望对您有所帮助。