NTESSessionRedPacketTipContentView.m 3.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091
  1. //
  2. // NTESSessionRedPacketTipContentView.m
  3. // NIM
  4. //
  5. // Created by chris on 2017/7/17.
  6. // Copyright © 2017年 Netease. All rights reserved.
  7. //
  8. #import "NTESSessionRedPacketTipContentView.h"
  9. //#import "JRMFHeader.h"
  10. #import "NTESRedPacketTipAttachment.h"
  11. #import "UIView+NTES.h"
  12. #import "NTESCustomAttachmentDefines.h"
  13. @interface NTESSessionRedPacketTipContentView()<M80AttributedLabelDelegate>
  14. @end
  15. @implementation NTESSessionRedPacketTipContentView
  16. - (instancetype)initSessionMessageContentView
  17. {
  18. if (self = [super initSessionMessageContentView]) {
  19. _label = [[M80AttributedLabel alloc] initWithFrame:CGRectZero];
  20. _label.font = [UIFont systemFontOfSize:Notification_Font_Size];
  21. _label.textColor = [UIColor whiteColor];;
  22. _label.backgroundColor = [UIColor clearColor];
  23. _label.numberOfLines = 0;
  24. _label.delegate = self;
  25. _label.underLineForLink = NO;
  26. [self addSubview:_label];
  27. }
  28. return self;
  29. }
  30. - (void)refresh:(NIMMessageModel *)model{
  31. [super refresh:model];
  32. NIMCustomObject *object = (NIMCustomObject *)model.message.messageObject;
  33. id<NTESCustomAttachmentInfo> attachment = (id<NTESCustomAttachmentInfo>)object.attachment;
  34. [self.label setText:nil];
  35. if ([attachment respondsToSelector:@selector(formatedMessage)]) {
  36. NSString *formatedMessage = attachment.formatedMessage;
  37. [self.label appendImage:[UIImage imageNamed:@"icon_redpacket_tip"]];
  38. [self.label appendText:formatedMessage];
  39. NSRange range = [formatedMessage rangeOfString:@"红包"];
  40. if (range.location != NSNotFound)
  41. {
  42. //由于还有个 icon , 需要将 range 往后挪一个位置
  43. range = NSMakeRange(range.location+1, range.length);
  44. [self.label addCustomLink:model forRange:range linkColor:UIColorFromRGB(0x238efa)];
  45. }
  46. }
  47. }
  48. - (UIImage *)chatBubbleImageForState:(UIControlState)state outgoing:(BOOL)outgoing
  49. {
  50. NSString *name = [[[NIMKit sharedKit] resourceBundleName] stringByAppendingPathComponent:@"icon_session_time_bg"];
  51. UIEdgeInsets insets = UIEdgeInsetsFromString(@"{8,20,8,20}");
  52. return [[UIImage imageNamed:name] resizableImageWithCapInsets:insets resizingMode:UIImageResizingModeStretch];
  53. }
  54. - (void)layoutSubviews
  55. {
  56. [super layoutSubviews];
  57. CGFloat padding = 20.f;
  58. self.label.size = [self.label sizeThatFits:CGSizeMake(self.width - 2 * padding, CGFLOAT_MAX)];
  59. self.label.centerX = self.width * .5f;
  60. self.label.centerY = self.height * .5f;
  61. self.bubbleImageView.frame = CGRectInset(self.label.frame, -8, -4);
  62. }
  63. #pragma mark - M80AttributedLabelDelegate
  64. - (void)m80AttributedLabel:(M80AttributedLabel *)label
  65. clickedOnLink:(id)linkData
  66. {
  67. if ([self.delegate respondsToSelector:@selector(onCatchEvent:)]) {
  68. NIMKitEvent *event = [[NIMKitEvent alloc] init];
  69. event.eventName = NTESShowRedPacketDetailEvent;
  70. event.messageModel = self.model;
  71. event.data = self;
  72. [self.delegate onCatchEvent:event];
  73. }
  74. }
  75. @end