YOUPAIOCBarrageCoustmerCell.m 8.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214
  1. //
  2. // YOUPAIOCBarrageCoustmerCell.m
  3. // livePro
  4. //
  5. // Created by leo on 2019/11/25.
  6. // Copyright © 2019 caiPro. All rights reserved.
  7. //
  8. #import "YOUPAIOCBarrageCoustmerCell.h"
  9. #import "UIImageView+WebCache.h"
  10. @implementation YOUPAIOCBarrageCoustmerCell
  11. - (instancetype)init {
  12. self = [super init];
  13. if (self) {
  14. self.userInteractionEnabled = YES;
  15. }
  16. return self;
  17. }
  18. - (void)prepareForReuse {
  19. [super prepareForReuse];
  20. //因为在点击的时候被改为了红色, 所以在重用的时候, 要重置一下颜色
  21. }
  22. - (void)setBarrageDescriptor:(YOUPAIOCBarrageDescriptor *)barrageDescriptor {
  23. [super setBarrageDescriptor:barrageDescriptor];
  24. self.des = (YOUPAIOCBarrageTextDescriptor *)barrageDescriptor;
  25. }
  26. - (void)youpaifupdateSubviewsData {
  27. [super youpaifupdateSubviewsData];
  28. for (UIView *subview in self.subviews) {
  29. [subview removeFromSuperview];
  30. }
  31. self.backgroundColor = [UIColor clearColor];
  32. self.dataModel = self.des.dataModel;
  33. UIImageView *vipImgV = [[UIImageView alloc] init];
  34. vipImgV.contentMode = UIViewContentModeScaleAspectFit;
  35. [vipImgV sd_setImageWithURL:[LCTools getImageUrlWithAddress:self.dataModel.vip_icon]];
  36. [self addSubview:vipImgV];
  37. [vipImgV mas_remakeConstraints:^(MASConstraintMaker *make) {
  38. make.centerY.equalTo(self);
  39. make.left.offset(0.0f);
  40. make.size.mas_offset(CGSizeMake(57.0f, 30.0f));
  41. }];
  42. UIView *backView = [[UIView alloc] init];
  43. [self addSubview:backView];
  44. [backView mas_remakeConstraints:^(MASConstraintMaker *make) {
  45. if (self.dataModel.vip_icon.length == 0) {
  46. make.left.offset(0.0f);
  47. }else{
  48. make.left.equalTo(vipImgV.mas_centerX);
  49. }
  50. //make.centerY.equalTo(vipImgV);
  51. make.height.greaterThanOrEqualTo(30.0f);
  52. make.top.bottom.equalTo(self);
  53. }];
  54. [self bringSubviewToFront:vipImgV];
  55. if (self.dataModel.vip_icon.length == 0) {
  56. vipImgV.hidden = YES;
  57. }else{
  58. vipImgV.hidden = NO;
  59. }
  60. UIImageView *avatarImgV = [[UIImageView alloc] init];
  61. avatarImgV.contentMode = UIViewContentModeScaleAspectFit;
  62. NSString* avatarImgUrlStr = [NSString stringWithFormat:@"%@/%@",[LCSaveData getImageUrl]?[LCSaveData getImageUrl]:BaseImgUrl,self.dataModel.avatar];
  63. [avatarImgV sd_setImageWithURL:[NSURL URLWithString:avatarImgUrlStr]];
  64. [backView addSubview:avatarImgV];
  65. [avatarImgV mas_remakeConstraints:^(MASConstraintMaker *make) {
  66. if (self.dataModel.vip_icon.length == 0) {
  67. make.left.offset(5.0f);
  68. }else{
  69. make.left.equalTo(vipImgV.mas_right).offset(3.0f);
  70. }
  71. make.centerY.equalTo(backView);
  72. make.size.mas_offset(CGSizeMake(20.0f, 20.0f));
  73. }];
  74. [avatarImgV layoutIfNeeded];
  75. [LCTools clipCorner:UIRectCornerAllCorners View:avatarImgV size:CGSizeMake(10.0f, 10.0f)];
  76. UILabel *contentL = [[UILabel alloc] init];
  77. contentL.textColor = [UIColor whiteColor];
  78. contentL.numberOfLines = 0;
  79. contentL.font = LCFont(13.0f);
  80. contentL.textAlignment = NSTextAlignmentCenter;
  81. [backView addSubview:contentL];
  82. NSString *textStr = [NSString stringWithFormat:@"%@ 送给 %@ %@x%@",self.dataModel.nickname,self.dataModel.tonickname,self.dataModel.giftname,@(self.dataModel.gifttotal)];
  83. NSMutableAttributedString *attributer = [[NSMutableAttributedString alloc]initWithString:textStr];
  84. ;
  85. [attributer addAttribute:NSForegroundColorAttributeName
  86. //value:HexColorFromRGB(0xFFDC80)
  87. value:UIColor.whiteColor
  88. range:[textStr rangeOfString:self.dataModel.nickname]];
  89. [attributer addAttribute:NSForegroundColorAttributeName
  90. //value:HexColorFromRGB(0xFFDC80)
  91. value:UIColor.whiteColor
  92. range:[textStr rangeOfString:self.dataModel.tonickname]];
  93. contentL.attributedText = attributer;
  94. [contentL mas_remakeConstraints:^(MASConstraintMaker *make) {
  95. // if (self.dataModel.vip_icon.length == 0) {
  96. // make.left.offset(5.0f);
  97. // }else{
  98. // make.left.equalTo(vipImgV.mas_right).offset(3.0f);
  99. // }
  100. make.left.equalTo(avatarImgV.mas_right).offset(3.0);
  101. make.centerY.equalTo(backView);
  102. }];
  103. UIImageView *giftImgV = [[UIImageView alloc] init];
  104. giftImgV.contentMode = UIViewContentModeScaleAspectFit;
  105. [giftImgV setImage:[LCTools giftImgWithGiftUrlStr:self.dataModel.giftimg]];
  106. [backView addSubview:giftImgV];
  107. [giftImgV mas_remakeConstraints:^(MASConstraintMaker *make) {
  108. make.left.equalTo(contentL.mas_right).offset(3.0f);
  109. make.centerY.equalTo(backView);
  110. make.size.mas_offset(CGSizeMake(30.0f, 30.0f));
  111. make.right.offset(-10.0f);
  112. }];
  113. [self addGradientLayerWithBackView:backView];
  114. }
  115. - (void)layoutSubviews {
  116. [super layoutSubviews];
  117. }
  118. - (void)youpaiflayoutContentSubviews {
  119. [super youpaiflayoutContentSubviews];
  120. }
  121. - (void)addGradientLayerWithBackView:(UIView *)backView{
  122. if (!self.des.gradientColor) {
  123. return;
  124. }
  125. [self layoutIfNeeded];
  126. //[LCTools clipCorner:UIRectCornerTopLeft|UIRectCornerBottomLeft View:backView size:CGSizeMake(15.0f, 15.0f)];
  127. [LCTools clipCorner:UIRectCornerAllCorners View:self size:CGSizeMake(15.0f, 15.0f)];
  128. UIColor *color = HexColorFromRGB(0xC55700);
  129. color = self.des.gradientColor;
  130. CAGradientLayer *gradientLayer = [CAGradientLayer layer];
  131. gradientLayer.colors = @[
  132. (__bridge id)(color).CGColor,
  133. (__bridge id)[(color) colorWithAlphaComponent:0.5].CGColor,
  134. (__bridge id)[(color) colorWithAlphaComponent:0.5].CGColor
  135. ];
  136. gradientLayer.locations = @[@0.2,@0.6,@1.0];
  137. gradientLayer.startPoint = CGPointMake(0, 0);
  138. gradientLayer.endPoint = CGPointMake(1.0, 0);
  139. gradientLayer.frame = CGRectMake(0.0, 0.0, backView.frame.size.width, backView.frame.size.height);
  140. UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:gradientLayer.bounds byRoundingCorners:UIRectCornerBottomLeft | UIRectCornerTopLeft cornerRadii:CGSizeMake(0, 0)];
  141. CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
  142. maskLayer.frame = gradientLayer.bounds;
  143. maskLayer.path = maskPath.CGPath;
  144. gradientLayer.mask = maskLayer;
  145. _gradientLayer = gradientLayer;
  146. [backView.layer insertSublayer:gradientLayer atIndex:0];
  147. }
  148. - (void)youpaifconvertContentToImage {
  149. /*
  150. UIImage *contentImage = [self.layer youpaifconvertContentToImageWithSize:CGSizeMake(CGRectGetMaxX(self.backView.frame), CGRectGetMaxY(self.backView.frame))];
  151. [self.layer setContents:(__bridge id)contentImage.CGImage];
  152. */
  153. }
  154. - (void)removeSubViewsAndSublayers {
  155. //如果不要删除leftImageView, middleImageView, rightImageView, textLabel, 只需重写这个方法并留空就可以了.
  156. //比如: 你想在这个cell被点击的时候, 修改文本颜色
  157. }
  158. - (void)youpaifaddBarrageAnimationWithDelegate:(id<CAAnimationDelegate>)animationDelegate {
  159. if (!self.superview) {
  160. return;
  161. }
  162. CGPoint startCenter = CGPointMake(CGRectGetMaxX(self.superview.bounds) + CGRectGetWidth(self.bounds)/2, self.center.y);
  163. //CGPoint stopCenter = CGPointMake((CGRectGetWidth(self.bounds)/2) + 20, self.center.y);
  164. //CGPoint endCenter = CGPointMake(-(CGRectGetWidth(self.bounds)/2), self.center.y);
  165. CGPoint stopCenter = CGPointMake(-(CGRectGetWidth(self.bounds)), self.center.y);
  166. CGPoint endCenter = CGPointMake(-(CGRectGetWidth(self.bounds) - 20), self.center.y);
  167. ///*
  168. CAKeyframeAnimation *walkAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"];
  169. walkAnimation.values = @[[NSValue valueWithCGPoint:startCenter], [NSValue valueWithCGPoint:stopCenter], [NSValue valueWithCGPoint:stopCenter], [NSValue valueWithCGPoint:endCenter]];
  170. walkAnimation.keyTimes = @[@(0.0), @(0.35), @(0.75), @(1.0)];
  171. walkAnimation.duration = self.barrageDescriptor.animationDuration;
  172. walkAnimation.repeatCount = 1;
  173. walkAnimation.delegate = animationDelegate;
  174. walkAnimation.removedOnCompletion = NO;
  175. walkAnimation.fillMode = kCAFillModeForwards;
  176. [self.layer addAnimation:walkAnimation forKey:kBarrageAnimation];
  177. }
  178. /*
  179. // Only override drawRect: if you perform custom drawing.
  180. // An empty implementation adversely affects performance during animation.
  181. - (void)drawRect:(CGRect)rect {
  182. // Drawing code
  183. }
  184. */
  185. @end