NewestItemCell.m 17 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423
  1. //
  2. // NewestItemCell.m
  3. // BuguLive
  4. //
  5. // Created by 丁凯 on 2017/8/8.
  6. // Copyright © 2017年 xfg. All rights reserved.
  7. //
  8. #import "NewestItemCell.h"
  9. #import "LivingModel.h"
  10. #import "HMHotItemModel.h"
  11. #import "CustomEdgeInsetLabel.h"
  12. @implementation NewestItemCell{
  13. CGFloat _labelTitleWidth;
  14. }
  15. - (void)awakeFromNib{
  16. [super awakeFromNib];
  17. self.img_labels.hidden = YES;
  18. self.levelImageView.hidden = YES;
  19. // self.topConstraint.constant = 8;
  20. self.headImgView.layer.cornerRadius = 5;
  21. self.headImgView.layer.masksToBounds = YES;
  22. self.headImgView.contentMode = UIViewContentModeScaleAspectFill;
  23. self.shadowView.layer.cornerRadius = 5;
  24. self.shadowView.layer.masksToBounds = YES;
  25. self.recordBtn.spacingBetweenImageAndTitle = 5;
  26. [self.recordBtn setBackgroundColor:[UIColor colorWithRed:0 green:0 blue:0 alpha:0.4]];
  27. self.recordBtn.layer.cornerRadius = self.recordHeightConstraint.constant / 2;
  28. self.recordBtn.layer.masksToBounds = YES;
  29. self.recordLabel.hidden = YES;
  30. self.recordWidthConstraint.constant = 60;
  31. self.addressBtn.spacingBetweenImageAndTitle = 5;
  32. // if (_labelTitleWidth > kRealValue(20)) {
  33. self.labelWidthConstraint.constant = _labelTitleWidth;
  34. //TODO:uiview 单边圆角或者单边框
  35. // }
  36. }
  37. - (void)setModel:(HMHotItemModel *)model{
  38. // if (![BGUtils isBlankString:model.labels]) {
  39. // self.img_labels.hidden = NO;
  40. //
  41. // [self.img_labels sd_setImageWithURL:[NSURL URLWithString:model.labels] completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
  42. // CGSize size=image.size;
  43. // self.widthConstraint.constant = size.width / 3;
  44. // self.heightConstraint.constant = size.height / 3;
  45. // NSLog(@"%@",image);
  46. // }];
  47. // self.topConstraint.constant = 36;
  48. // }
  49. self.img_labels.hidden = YES;
  50. self.nickNameL.text = [NSString stringWithFormat:@"ID:%d",model.room_id];
  51. if (StrValid(model.classified_title)) {
  52. [self.typeButton setTitle:[NSString stringWithFormat:@"%@",model.classified_title] forState:UIControlStateNormal];
  53. // [self.imgLabelBtn setBackgroundColor:[UIColor colorWithHexString:model.lable_color]];
  54. [self.typeButton setBackgroundImage:[UIImage imageNamed:@"home_list_type_other"] forState:UIControlStateNormal];
  55. self.typeButton.hidden = NO;
  56. }else{
  57. self.typeButton.hidden = YES;
  58. }
  59. //TODO:uiview 单边圆角或者单边框
  60. // UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:self.typeButton.bounds byRoundingCorners:(UIRectCornerTopRight | UIRectCornerBottomRight) cornerRadii:CGSizeMake(11,11)];//圆角大小
  61. // CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
  62. // maskLayer.frame = self.typeButton.bounds;
  63. // maskLayer.path = maskPath.CGPath;
  64. // self.typeButton.layer.mask = maskLayer;
  65. self.layer.cornerRadius = 10;
  66. self.clipsToBounds = YES;
  67. [self.liveContentLabel setHidden:YES];
  68. [self.liveContentExtLabel setHidden:NO];
  69. // self.watchBtn.spacingBetweenImageAndTitle = 2;
  70. // self.watchBtn.imagePosition = QMUIButtonImagePositionLeft;
  71. if ([model.is_live_pay isEqualToString:@"1"]) {
  72. [self.recordBtn setTitle:ASLocalizedString(@"付费直播")forState:UIControlStateNormal];
  73. self.recordWidthConstraint.constant = 80;
  74. if([model.live_pay_type isEqualToString:@"1"])
  75. {
  76. self.liveContentLabel.text = [NSString stringWithFormat:ASLocalizedString(@"%@%@/场"),model.live_fee,[GlobalVariables sharedInstance].appModel.diamond_name];
  77. }
  78. else
  79. {
  80. self.liveContentLabel.text = [NSString stringWithFormat:ASLocalizedString(@"%@%@/分钟"),model.live_fee,[GlobalVariables sharedInstance].appModel.diamond_name];
  81. }
  82. if ([model.is_gaming isEqualToString:@"1"]) {
  83. self.liveContentExtLabel.text = model.game_name;
  84. }else{
  85. self.liveContentExtLabel.hidden = YES;
  86. }
  87. }else{
  88. [self.recordBtn setTitle:(model.live_in == FW_LIVE_STATE_ING ? ASLocalizedString(@"直播"): ASLocalizedString(@"回播")) forState:UIControlStateNormal];
  89. if ([model.is_gaming isEqualToString:@"1"]) {
  90. self.liveContentLabel.text = model.game_name;
  91. }else{
  92. self.liveContentLabel.hidden = YES;
  93. self.liveContentExtLabel.hidden = YES;
  94. }
  95. }
  96. [self.liveContentExtLabel setLocalizedString];
  97. [self.liveContentLabel setLocalizedString];
  98. self.isPKIngImg.hidden = YES;
  99. self.pkButton.hidden =
  100. self.PKingLabel.hidden =
  101. self.PKIngStatusImgV.hidden = YES;
  102. if ([model.is_video_pk isEqualToString:@"1"]) {
  103. self.isPKIngImg.hidden = NO;
  104. self.pkButton.hidden =
  105. self.PKingLabel.hidden =
  106. self.PKIngStatusImgV.hidden = NO;
  107. self.PKingLabel.text = ASLocalizedString(@"PK中");
  108. }
  109. self.levelImageView.hidden = YES;
  110. self.distanceLabel.hidden = YES;
  111. self.backgroundColor = kBackGroundColor;
  112. // [self.addressLabel setTextInsets:UIEdgeInsetsMake(0, 0, 0, 5)];
  113. [self.nameLabel setText:model.nick_name];
  114. [self.watchCountLabel setText:model.watch_number];
  115. [self.headImgView sd_setImageWithURL:[NSURL URLWithString:model.live_image] placeholderImage:kDefaultPreloadHeadImg];
  116. if (model.city.length > 0)
  117. {
  118. [self.addressBtn setTitle:[NSString stringWithFormat:@"%@",model.city] forState:UIControlStateNormal];
  119. // .text = [NSString stringWithFormat:@"%@",model.city];
  120. }else
  121. {
  122. [self.addressBtn setTitle:ASLocalizedString(@"火星")forState:UIControlStateNormal];
  123. }
  124. self.addressBtn.backgroundColor = kClearColor;
  125. // [self.watchBtn setTitle:model.watch_number forState:UIControlStateNormal];
  126. self.watchLabel.text = model.watch_number;
  127. [self isCheckModeWithUid:model.user_id];
  128. }
  129. - (void)setCellContent:(LivingModel *)LModel Type:(int)type{
  130. if (![BGUtils isBlankString:LModel.labels]) {
  131. self.img_labels.hidden = NO;
  132. [self.img_labels sd_setImageWithURL:[NSURL URLWithString:LModel.labels] completed:^(UIImage * _Nullable image, NSError * _Nullable error, SDImageCacheType cacheType, NSURL * _Nullable imageURL) {
  133. CGSize size=image.size;
  134. self.widthConstraint.constant = size.width / 3;
  135. self.heightConstraint.constant = size.height / 3;
  136. // NSLog(@"%@",size);
  137. NSLog(@"%@",image);
  138. }];
  139. self.topConstraint.constant = 36;
  140. }else{
  141. self.topConstraint.constant = 12;
  142. }
  143. self.nickNameL.text = [NSString stringWithFormat:@"ID:%d",LModel.room_id];
  144. self.img_labels.hidden = YES;
  145. if (StrValid(LModel.classified_title)) {
  146. [self.typeButton setTitle:[NSString stringWithFormat:@"%@",LModel.classified_title] forState:UIControlStateNormal];
  147. // [self.imgLabelBtn setBackgroundColor:[UIColor colorWithHexString:LModel.lable_color]];
  148. [self.typeButton setBackgroundImage:[UIImage imageNamed:@"home_list_type_other"] forState:UIControlStateNormal];
  149. self.typeButton.hidden = NO;
  150. }else{
  151. self.typeButton.hidden = YES;
  152. }
  153. if(LModel.password.length)
  154. {
  155. self.passwordImg.hidden = NO;
  156. self.passwordImgView.hidden = NO;
  157. }
  158. else
  159. {
  160. self.passwordImg.hidden = YES;
  161. self.passwordImgView.hidden = YES;
  162. }
  163. _labelTitleWidth = [NewestItemCell getWidthWithText:LModel.classified_title height:22 font:14] + kRealValue(20);
  164. //
  165. // CGRect frame = CGRectMake(0, 10, _labelTitleWidth, 20);
  166. //
  167. // UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:frame byRoundingCorners:(UIRectCornerTopRight | UIRectCornerBottomRight) cornerRadii:CGSizeMake(10,10)];//圆角大小
  168. // CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
  169. // maskLayer.frame = frame;
  170. // maskLayer.path = maskPath.CGPath;
  171. // self.imgLabelBtn.layer.mask = maskLayer;
  172. // [NewestItemCell getLabelHeightWithText:LModel.classified_title width:kScreenW * 0.5 font:14];
  173. // CGSize ss = [self.imgLabelBtn.titleLabel sizeThatFits:CGSizeMake(kScreenW, CGFLOAT_MAX)];
  174. self.labelWidthConstraint.constant = _labelTitleWidth ;
  175. self.pkButton.hidden =
  176. self.PKingLabel.hidden =
  177. self.PKIngStatusImgV.hidden = YES;
  178. self.isPKIngImg.hidden = YES;
  179. if ([LModel.is_video_pk isEqualToString:@"1"]) {
  180. self.isPKIngImg.hidden = NO;
  181. self.pkButton.hidden =
  182. self.PKingLabel.hidden =
  183. self.PKIngStatusImgV.hidden = NO;
  184. self.PKingLabel.text = ASLocalizedString(@"PK中");
  185. }
  186. if (type == 1) {
  187. self.layer.cornerRadius = 10;
  188. self.clipsToBounds = YES;
  189. self.levelImageView.hidden = YES;
  190. self.distanceLabel.hidden = YES;
  191. [self.liveContentLabel setHidden:YES];
  192. [self.liveContentExtLabel setHidden:NO];
  193. if ([LModel.is_live_pay isEqualToString:@"1"]) {
  194. [self.recordBtn setTitle:ASLocalizedString(@"付费直播")forState:UIControlStateNormal];
  195. self.recordWidthConstraint.constant = 80;
  196. if([LModel.live_pay_type isEqualToString:@"1"])
  197. {
  198. self.liveContentLabel.text = [NSString stringWithFormat:ASLocalizedString(@"%@%@/场"),LModel.live_fee,[GlobalVariables sharedInstance].appModel.diamond_name];
  199. }
  200. else
  201. {
  202. self.liveContentLabel.text = [NSString stringWithFormat:ASLocalizedString(@"%@%@/分钟"),LModel.live_fee,[GlobalVariables sharedInstance].appModel.diamond_name];
  203. }
  204. if ([LModel.is_gaming isEqualToString:@"1"]) {
  205. [self.liveContentExtLabel setHidden:YES];
  206. self.liveContentExtLabel.text = LModel.game_name;
  207. }else{
  208. self.liveContentExtLabel.hidden = YES;
  209. }
  210. }else{
  211. // self.stateLabel.text = (LModel.live_in == FW_LIVE_STATE_ING ? ASLocalizedString(@"直播"): ASLocalizedString(@"回播"));
  212. [self.recordBtn setTitle:(LModel.live_in == FW_LIVE_STATE_ING ? ASLocalizedString(@"直播"): ASLocalizedString(@"回播")) forState:UIControlStateNormal];
  213. if ([LModel.is_gaming isEqualToString:@"1"]) {
  214. self.liveContentLabel.text = LModel.game_name;
  215. self.liveContentExtLabel.hidden = YES;
  216. }else{
  217. self.liveContentLabel.hidden = YES;
  218. self.liveContentExtLabel.hidden = YES;
  219. }
  220. }
  221. [self.headImgView sd_setImageWithURL:[NSURL URLWithString:LModel.live_image] placeholderImage:kDefaultPreloadHeadImg];
  222. // [self.nameLabel setText:LModel.nick_name];
  223. [self.nameLabel setText:LModel.title];
  224. [self.watchCountLabel setText:LModel.watch_number];
  225. // [self.watchBtn setTitle:LModel.watch_number forState:UIControlStateNormal];
  226. self.watchLabel.text = LModel.watch_number;
  227. [self.headImgView sd_setImageWithURL:[NSURL URLWithString:LModel.live_image] placeholderImage:kDefaultPreloadHeadImg];
  228. if (LModel.city.length > 0){
  229. [self.addressBtn setTitle:[NSString stringWithFormat:@"%@",LModel.city] forState:UIControlStateNormal];
  230. }else
  231. {
  232. [self.addressBtn setTitle:ASLocalizedString(@"火星")forState:UIControlStateNormal];
  233. }
  234. self.addressBtn.hidden = YES;
  235. }else{
  236. self.layer.cornerRadius = 10;
  237. self.clipsToBounds = YES;
  238. // self.recordLabel.text = (LModel.live_in == FW_LIVE_STATE_ING ? ASLocalizedString(@"直播"): ASLocalizedString(@"回播"));
  239. [self.recordBtn setTitle:(LModel.live_in == FW_LIVE_STATE_ING ? ASLocalizedString(@"直播"): ASLocalizedString(@"回播")) forState:UIControlStateNormal];
  240. // [self.stateLabel setHidden:NO];
  241. // [self.recordLabel setHidden:NO];
  242. [self.liveContentLabel setHidden:YES];
  243. [self.liveContentExtLabel setHidden:YES];
  244. [self.addressBtn setHidden:NO];
  245. [self.liveContentLabel setHighlighted:YES];
  246. [self.headImgView sd_setImageWithURL:[NSURL URLWithString:LModel.live_image] placeholderImage:kDefaultPreloadHeadImg];
  247. [self.nameLabel setText:LModel.title];
  248. [self.watchCountLabel setHidden:NO];
  249. // self.watchBtn.hidden = NO;
  250. // [self.watchBtn setTitle:LModel.watch_number forState:UIControlStateNormal];
  251. self.watchLabel.text = LModel.watch_number;
  252. // [self.recordLabel setHidden:YES];
  253. [self.watchingLabel setHidden:YES];
  254. self.levelImageView.image = [UIImage imageNamed:[NSString stringWithFormat:@"level%@",LModel.user_level]];
  255. self.distanceLabel.hidden = YES;
  256. if (LModel.city.length > 0)
  257. {
  258. [self.addressBtn setTitle:[NSString stringWithFormat:@"%@",LModel.city] forState:UIControlStateNormal];
  259. // .text = [NSString stringWithFormat:@"%@",LModel.city];
  260. }else
  261. {
  262. [self.addressBtn setTitle:ASLocalizedString(@"火星")forState:UIControlStateNormal];
  263. }
  264. }
  265. if(LModel.is_voice == 1)
  266. {
  267. [self.recordBtn setTitle:ASLocalizedString(@"语音直播") forState:UIControlStateNormal];
  268. self.recordWidthConstraint.constant = 100;
  269. }
  270. self.backgroundColor = UIColor.clearColor;
  271. self.addressBtn.backgroundColor = kClearColor;
  272. // self.watchBtn.spacingBetweenImageAndTitle = 4;
  273. // self.watchBtn.imagePosition = QMUIButtonImagePositionLeft;
  274. [self isCheckModeWithUid:LModel.user_id];
  275. [self setAnnimateImage];
  276. }
  277. //判断是否是审核模式
  278. -(void)isCheckModeWithUid:(NSString *)uid{
  279. if (kIsCheckingVersion() )
  280. {
  281. [self.headImgView sd_setImageWithURL:nil placeholderImage:[[GlobalVariables sharedInstance]getKatongImageWidthID:uid]];
  282. self.img_labels.hidden = YES;
  283. }
  284. }
  285. -(void)setAnnimateImage{
  286. NSMutableArray *arr = [NSMutableArray array];
  287. for (int i = 0; i < 10; i ++) {
  288. [arr addObject:[UIImage imageNamed:[NSString stringWithFormat:@"mg_home_jump%d",i]]];
  289. }
  290. self.recordBtn.imageView.image = arr.firstObject;
  291. self.recordBtn.imageView.animationImages = arr;
  292. //动画的总时长(一组动画坐下来的时间 6张图片显示一遍的总时间)
  293. self.recordBtn.imageView.animationDuration = 2;
  294. self.recordBtn.imageView.animationRepeatCount = 0;//动画进行几次结束
  295. [self.recordBtn.imageView startAnimating];//开始动画
  296. // [imageView stopAnimating];//停止动画
  297. self.recordBtn.imageView.userInteractionEnabled = YES;
  298. }
  299. //根据宽度求高度 content 计算的内容 width 计算的宽度 font字体大小
  300. + (CGFloat)getLabelHeightWithText:(NSString *)text width:(CGFloat)width font: (CGFloat)font
  301. {
  302. CGRect rect = [text boundingRectWithSize:CGSizeMake(width, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:font]} context:nil];
  303. return rect.size.height;
  304. }
  305. //根据高度度求宽度 text 计算的内容 Height 计算的高度 font字体大小
  306. + (CGFloat)getWidthWithText:(NSString *)text height:(CGFloat)height font:(CGFloat)font{
  307. CGRect rect = [text boundingRectWithSize:CGSizeMake(MAXFLOAT, height)
  308. options:NSStringDrawingUsesLineFragmentOrigin
  309. attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:font]}
  310. context:nil];
  311. return rect.size.width;
  312. }
  313. - (void)layoutSubviews{
  314. self.labelWidthConstraint.constant = _labelTitleWidth;
  315. // //TODO:uiview 单边圆角或者单边框
  316. // UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:self.imgLabelBtn.bounds byRoundingCorners:(UIRectCornerTopRight | UIRectCornerBottomRight) cornerRadii:CGSizeMake(10,10)];//圆角大小
  317. // CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
  318. // maskLayer.frame = self.imgLabelBtn.bounds;
  319. // maskLayer.path = maskPath.CGPath;
  320. // self.imgLabelBtn.layer.mask = maskLayer;
  321. // CGRect frame = CGRectMake(self.imgLabelBtn.left, self.imgLabelBtn.y, _labelTitleWidth, self.imgLabelBtn.height);
  322. //
  323. // UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:frame byRoundingCorners:(UIRectCornerTopRight | UIRectCornerBottomRight) cornerRadii:CGSizeMake(10,10)];//圆角大小
  324. // CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
  325. // maskLayer.frame = frame;
  326. // maskLayer.path = maskPath.CGPath;
  327. // self.imgLabelBtn.layer.mask = maskLayer;
  328. // _labelTitleWidth = [NewestItemCell getWidthWithText:LModel.classified_title height:22 font:14] + kRealValue(20);
  329. CGRect frame = CGRectMake(0, 0, _labelTitleWidth, 20);
  330. // UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:frame byRoundingCorners:(UIRectCornerTopRight | UIRectCornerBottomRight) cornerRadii:CGSizeMake(10,10)];//圆角大小
  331. // CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
  332. // maskLayer.frame = frame;
  333. // maskLayer.path = maskPath.CGPath;
  334. // self.typeButton.layer.mask = maskLayer;
  335. }
  336. @end