MediaMessageGridViewCell.m 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. //
  2. // MediaMessageGridViewCell.m
  3. // WFChatUIKit
  4. //
  5. // Created by dali on 2020/7/1.
  6. // Copyright © 2020 WildFireChat. All rights reserved.
  7. //
  8. #import "MediaMessageGridViewCell.h"
  9. #import <WFChatClient/WFCChatClient.h>
  10. @interface MediaMessageGridViewCell ()
  11. @property(nonatomic, strong)UIImageView *imageView;
  12. @property(nonatomic, strong)UIImageView *videoFlag;
  13. @property(nonatomic, strong)UILabel *videoDuration;
  14. @property(nonatomic, strong)UILabel *fileName;
  15. @property(nonatomic, strong)UILabel *fileSize;
  16. @end
  17. @implementation MediaMessageGridViewCell
  18. -(void)setMediaMessage:(WFCCMessage *)mediaMessage {
  19. _mediaMessage = mediaMessage;
  20. if ([mediaMessage.content isKindOfClass:[WFCCImageMessageContent class]]) {
  21. WFCCImageMessageContent *imgCnt = (WFCCImageMessageContent *)mediaMessage.content;
  22. self.imageView.image = imgCnt.thumbnail;
  23. self.imageView.hidden = NO;
  24. self.videoFlag.hidden = YES;
  25. self.videoDuration.hidden = YES;
  26. self.fileSize.hidden = YES;
  27. self.fileName.hidden = YES;
  28. } else if([mediaMessage.content isKindOfClass:[WFCCVideoMessageContent class]]) {
  29. WFCCVideoMessageContent *videoCnt = (WFCCVideoMessageContent *)mediaMessage.content;
  30. self.imageView.image = videoCnt.thumbnail;
  31. if (videoCnt.duration == 0) {
  32. self.videoDuration.text = nil;
  33. } else if(videoCnt.duration > 60) {
  34. self.videoDuration.text = [NSString stringWithFormat:@"%ld:%2ld", videoCnt.duration/60, videoCnt.duration%60];
  35. } else {
  36. self.videoDuration.text = [NSString stringWithFormat:@"0:%2ld", videoCnt.duration];
  37. }
  38. self.imageView.hidden = NO;
  39. self.videoFlag.hidden = NO;
  40. self.videoDuration.hidden = NO;
  41. self.fileSize.hidden = YES;
  42. self.fileName.hidden = YES;
  43. } else if([mediaMessage.content isKindOfClass:[WFCCFileMessageContent class]]) {
  44. WFCCFileMessageContent *fileCnt = (WFCCFileMessageContent *)mediaMessage.content;
  45. self.fileName.text = fileCnt.name;
  46. if (fileCnt.size > 1024 * 1024) {
  47. self.fileSize.text = [NSString stringWithFormat:@"%ldM", fileCnt.size/1024/1024];
  48. } else if(fileCnt.size > 1024) {
  49. self.fileSize.text = [NSString stringWithFormat:@"%ldK", fileCnt.size/1024];
  50. } else {
  51. self.fileSize.text = [NSString stringWithFormat:@"%ldB", fileCnt.size];
  52. }
  53. self.backgroundColor = [UIColor grayColor];
  54. self.imageView.hidden = YES;
  55. self.videoFlag.hidden = YES;
  56. self.videoDuration.hidden = YES;
  57. self.fileSize.hidden = NO;
  58. self.fileName.hidden = NO;
  59. }
  60. }
  61. - (UIImageView *)imageView {
  62. if (!_imageView) {
  63. _imageView = [[UIImageView alloc] initWithFrame:self.bounds];
  64. [self addSubview:_imageView];
  65. }
  66. return _imageView;
  67. }
  68. - (UIImageView *)videoFlag {
  69. if (!_videoFlag) {
  70. _videoFlag = [[UIImageView alloc] initWithFrame:CGRectMake(8, self.bounds.size.height-24, 15, 12)];
  71. _videoFlag.image = [UIImage imageNamed:@"video"];
  72. [self addSubview:_videoFlag];
  73. }
  74. return _videoFlag;
  75. }
  76. -(UILabel *)videoDuration {
  77. if (!_videoDuration) {
  78. _videoDuration = [[UILabel alloc] initWithFrame:CGRectMake(28, self.bounds.size.height-24-2, 40, 16)];
  79. _videoDuration.font = [UIFont systemFontOfSize:12];
  80. _videoDuration.lineBreakMode = NSLineBreakByTruncatingHead;
  81. [self addSubview:_videoDuration];
  82. }
  83. return _videoDuration;
  84. }
  85. -(UILabel *)fileName {
  86. if (!_fileName) {
  87. _fileName = [[UILabel alloc] initWithFrame:CGRectMake(8, 8, self.bounds.size.width-16, 40)];
  88. _fileName.font = [UIFont systemFontOfSize:14];
  89. _fileName.lineBreakMode = NSLineBreakByTruncatingMiddle;
  90. _fileName.numberOfLines = 2;
  91. [self addSubview:_fileName];
  92. }
  93. return _fileName;
  94. }
  95. -(UILabel *)fileSize {
  96. if (!_fileSize) {
  97. _fileSize = [[UILabel alloc] initWithFrame:CGRectMake(8, self.bounds.size.height-24, self.bounds.size.width-16, 16)];
  98. _fileSize.font = [UIFont systemFontOfSize:14];
  99. _fileSize.lineBreakMode = NSLineBreakByTruncatingHead;
  100. [self addSubview:_fileSize];
  101. }
  102. return _fileSize;
  103. }
  104. @end