NTESSessionSnapchatContentView.m 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. //
  2. // NTESSessionSnapchatContentView.m
  3. // NIM
  4. //
  5. // Created by amao on 7/2/15.
  6. // Copyright (c) 2015 Netease. All rights reserved.
  7. //
  8. #import "NTESSessionSnapchatContentView.h"
  9. #import "NTESSnapchatAttachment.h"
  10. #import "NTESSessionUtil.h"
  11. #import "UIView+NTES.h"
  12. NSString *const NIMDemoEventNameOpenSnapPicture = @"NIMDemoEventNameOpenSnapPicture";
  13. NSString *const NIMDemoEventNameCloseSnapPicture = @"NIMDemoEventNameCloseSnapPicture";
  14. @interface NTESSessionSnapchatContentView()
  15. @property (nonatomic,strong) UIImageView *imageView;
  16. @property (nonatomic,strong) UILabel *label;
  17. @property (nonatomic,strong) UILongPressGestureRecognizer *longpressGesture;
  18. @end
  19. @implementation NTESSessionSnapchatContentView
  20. - (instancetype)initSessionMessageContentView{
  21. self = [super initSessionMessageContentView];
  22. if (self) {
  23. _longpressGesture = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(onLongPressDown:)];
  24. [self addGestureRecognizer:_longpressGesture];
  25. _imageView = [[UIImageView alloc] initWithFrame:CGRectZero];
  26. [self addSubview:_imageView];
  27. self.bubbleImageView.hidden = YES;//图片背景自带气泡。。
  28. _label = [[UILabel alloc] initWithFrame:CGRectZero];
  29. _label.font = [UIFont systemFontOfSize:13.f];
  30. _label.textColor = [UIColor grayColor];
  31. _label.text = @"按住查看";
  32. [_label sizeToFit];
  33. [self addSubview:_label];
  34. }
  35. return self;
  36. }
  37. - (void)refresh:(NIMMessageModel *)model{
  38. [super refresh:model];
  39. NIMCustomObject * customObject = (NIMCustomObject*)model.message.messageObject;
  40. NTESSnapchatAttachment *attachment = (NTESSnapchatAttachment *)customObject.attachment;
  41. self.imageView.image = attachment.showCoverImage;
  42. self.label.hidden = attachment.isFired;
  43. self.longpressGesture.enabled = !attachment.isFired;
  44. }
  45. - (void)layoutSubviews{
  46. [super layoutSubviews];
  47. NIMCustomObject * customObject = (NIMCustomObject*)self.model.message.messageObject;
  48. NTESSnapchatAttachment *attachment = (NTESSnapchatAttachment *)customObject.attachment;
  49. UIEdgeInsets contentInsets = self.model.contentViewInsets;
  50. UIImage *showCoverImage = attachment.showCoverImage;
  51. CGRect imageViewFrame = CGRectMake(contentInsets.left, contentInsets.top, showCoverImage.size.width, showCoverImage.size.height);
  52. self.imageView.frame = imageViewFrame;
  53. CGFloat customSnapMessageImageRightToText = 5.f;
  54. CGFloat customSnapMessageTextBottom = 20.f;
  55. self.label.left = self.model.message.isOutgoingMsg ? self.imageView.left - customSnapMessageImageRightToText - self.label.width : self.imageView.right + customSnapMessageImageRightToText;
  56. self.label.bottom = self.imageView.bottom - customSnapMessageTextBottom ;
  57. }
  58. - (void)onLongPressDown:(UILongPressGestureRecognizer *)recognizer
  59. {
  60. NIMMessage *message = self.model.message;
  61. if (!message.isReceivedMsg && message.deliveryState != NIMMessageDeliveryStateDeliveried) {
  62. return;
  63. }
  64. if (recognizer.state != UIGestureRecognizerStateBegan) {
  65. return;
  66. }
  67. recognizer.enabled = NO;
  68. [self goOpen];
  69. }
  70. - (void)onTouchUpInside:(id)sender{
  71. if (self.presentedView) {
  72. [self goClose];
  73. }
  74. }
  75. - (void)onTouchUpOutside:(id)sender{
  76. if (self.presentedView) {
  77. [self goClose];
  78. }
  79. }
  80. - (void)goOpen{
  81. if ([self.delegate respondsToSelector:@selector(onCatchEvent:)]) {
  82. NIMKitEvent *event = [[NIMKitEvent alloc] init];
  83. event.eventName = NIMDemoEventNameOpenSnapPicture;
  84. event.messageModel = self.model;
  85. event.data = self;
  86. [self.delegate onCatchEvent:event];
  87. }
  88. }
  89. - (void)goClose{
  90. if ([self.delegate respondsToSelector:@selector(onCatchEvent:)]) {
  91. NIMKitEvent *event = [[NIMKitEvent alloc] init];
  92. event.eventName = NIMDemoEventNameCloseSnapPicture;
  93. event.messageModel = self.model;
  94. event.data = self;
  95. [self.delegate onCatchEvent:event];
  96. }
  97. }
  98. @end