gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 03:36:02 24 4
gpt4 key购买 nike

collectionView可能的变化逻辑:attributedTextForCellTopLabelAtIndexPath: delegate method for show date timestamp not by 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;
}

当前存在的逻辑显示相同的时间戳被复制如下。

enter image description here

最佳答案

因为每个 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;
}

关于ios - 更改 JSQMessagesViewController 中的时间戳逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31308339/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com