在 swift 中更改 JSQmessageVC 时间戳逻辑

Changing JSQmessageVC Timestamp logic in swift

如何更改时间戳逻辑以避免重复时间,如下面的屏幕截图所示?

这是我的代码..

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

    if indexPath.item % 3 == 0 {

        let message = messages[indexPath.item]

        return JSQMessagesTimestampFormatter.sharedFormatter().attributedTimestampForDate(message.date)
    }
    return nil
}

override func collectionView(collectionView: JSQMessagesCollectionView!, layout collectionViewLayout: JSQMessagesCollectionViewFlowLayout!, heightForCellTopLabelAtIndexPath indexPath: NSIndexPath!) -> CGFloat {

    if indexPath.item % 3 == 0 {
        return kJSQMessagesCollectionViewCellLabelHeightDefault
    }
    return 0.0
}

如果我们将之前的消息日期与当前的消息日期进行比较,我们只能在时间更改时显示。如果需要,您可以留下每三次消息或将其删除

 if indexPath.item % 3 == 0 {          //optional

  let previousMessage = messages[indexPath.item - 1]
  let message = messages[indexPath.item]
    if message.date == previousMessage {
      return JSQMessagesTimestampFormatter.sharedFormatter().attributedTimestampForDate(message.date)
    else { 
      return nil
    }
  }
return nil

您可能需要确保它不是第一条消息,因为消息[indexPath.item - 1] 将超出范围。但除此之外,它应该可以解决您的问题。祝你好运