TUITextReplyQuoteViewData.m 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. //
  2. // TUITextReplyQuoteViewData.m
  3. // TUIChat
  4. //
  5. // Created by harvy on 2021/11/25.
  6. // Copyright © 2023 Tencent. All rights reserved.
  7. //
  8. #import "TUITextReplyQuoteViewData.h"
  9. #import <TIMCommon/NSString+TUIEmoji.h>
  10. #import "TUITextMessageCellData.h"
  11. @implementation TUITextReplyQuoteViewData
  12. + (instancetype)getReplyQuoteViewData:(TUIMessageCellData *)originCellData {
  13. if (originCellData == nil) {
  14. return nil;
  15. }
  16. if (![originCellData isKindOfClass:TUITextMessageCellData.class]) {
  17. return nil;
  18. }
  19. TUITextReplyQuoteViewData *myData = [[TUITextReplyQuoteViewData alloc] init];
  20. myData.text = [(TUITextMessageCellData *)originCellData content];
  21. myData.originCellData = originCellData;
  22. return myData;
  23. }
  24. - (CGSize)contentSize:(CGFloat)maxWidth {
  25. NSAttributedString *attributeString = nil;
  26. BOOL showRevokeStr = (self.originCellData.innerMessage.status == V2TIM_MSG_STATUS_LOCAL_REVOKED) &&
  27. !self.showRevokedOriginMessage;
  28. if (showRevokeStr) {
  29. NSString * revokeStr = self.supportForReply?
  30. TIMCommonLocalizableString(TUIKitRepliesOriginMessageRevoke):
  31. TIMCommonLocalizableString(TUIKitReferenceOriginMessageRevoke);
  32. attributeString = [revokeStr getFormatEmojiStringWithFont:[UIFont systemFontOfSize:10.0] emojiLocations:nil];
  33. } else {
  34. attributeString = [self.text getFormatEmojiStringWithFont:[UIFont systemFontOfSize:10.0] emojiLocations:nil];
  35. }
  36. CGSize size = [@"0" sizeWithAttributes:@{NSFontAttributeName : [UIFont systemFontOfSize:10.0]}];
  37. CGRect rect = [attributeString boundingRectWithSize:CGSizeMake(maxWidth, size.height * 2)
  38. options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading
  39. context:nil];
  40. CGFloat h = rect.size.height < size.height * 2 ? rect.size.height : size.height * 2;
  41. if (showRevokeStr && self.supportForReply) {
  42. h = size.height *2;
  43. }
  44. return CGSizeMake(rect.size.width, h);
  45. }
  46. @end