微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

ios – 更改JSQMessagesViewController中的时间戳逻辑

它的可能更改逻辑为collectionView:attributedTextForCellTopLabelAtIndexPath:showate方法,显示日期时间戳不是由indexPath.item%4 == 0? SOMessaging一天一天怎么样?管他呢?

此编码用于显示时间戳.

- (CGFloat)collectionView:(JSQMessagesCollectionView *)collectionView
                   layout:(JSQMessagesCollectionViewFlowLayout *)collectionViewLayout heightForCellTopLabelAtIndexPath:(NSIndexPath *)indexPath
{

    if (indexPath.item % 3 == 0) {
        return kJSQMessagesCollectionViewCellLabelHeightDefault;
    }

    return 0.0f;
}

当前存在的逻辑显示相同的时间戳重复如下.

解决方法

因为每个JSQMessage对象都有一个date属性,所以您只需将每条消息的日期与上一条消息的日期进行比较即可.

[thisMessageDate timeIntervalSinceDate:(NSDate *)prevIoUsMessageDate]将以秒为单位给出差异.如果差异大于,例如,一分钟(或您想要的任何时间间隔),则显示时间戳.

这就是我这样做的方式:

- (NSAttributedString *)collectionView:(JSQMessagesCollectionView *)collectionView attributedTextForCellTopLabelAtIndexPath:(NSIndexPath *)indexPath {
JSQMessage *message = [self.messages objectAtIndex:indexPath.item];

  if (indexPath.item == 0) {
      return [[JSQMessagesTimestampformatter sharedFormatter] attributedTimestampForDate:message.date];
  }

  if (indexPath.item - 1 > 0) {
    JSQMessage *prevIoUsMessage = [self.messages objectAtIndex:indexPath.item - 1];

    if ([message.date timeIntervalSinceDate:prevIoUsMessage.date] / 60 > 1) {
        return [[JSQMessagesTimestampformatter sharedFormatter] attributedTimestampForDate:message.date];
    }
  }

  return nil;
}

然后重复此逻辑以确保时间戳具有正确的高度:

- (CGFloat)collectionView:(JSQMessagesCollectionView *)collectionView
               layout:(JSQMessagesCollectionViewFlowLayout *)collectionViewLayout heightForCellTopLabelAtIndexPath:(NSIndexPath *)indexPath {

  if (indexPath.item == 0) {
    return kJSQMessagesCollectionViewCellLabelHeightDefault;
  }

  if (indexPath.item - 1 > 0) {
    JSQMessage *prevIoUsMessage = [self.messages objectAtIndex:indexPath.item - 1];
    JSQMessage *message = [self.messages objectAtIndex:indexPath.item];

    if ([message.date timeIntervalSinceDate:prevIoUsMessage.date] / 60 > 1) {
        return kJSQMessagesCollectionViewCellLabelHeightDefault;
    }
  }

  return 0.0f;
}

原文地址:https://www.jb51.cc/iOS/330879.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐