在 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] 将超出范围。但除此之外,它应该可以解决您的问题。祝你好运
如何更改时间戳逻辑以避免重复时间,如下面的屏幕截图所示?
这是我的代码..
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] 将超出范围。但除此之外,它应该可以解决您的问题。祝你好运