// // TUIConversationCell+TUIPatch.m // TreeHole // // Created by mambaxie on 2022/4/25. // #import "TUIConversationCell+TUIPatch.h" #import static const NSInteger ReloadtionLabelTag = 2205051056; static const NSInteger GenderIconImageViewTag = 2206031119; static const NSInteger VIPTageImageVieTag = 2205051130; static const NSInteger NianVipTageImageVieTag = 2205051137; static const NSInteger ManagerTageImageVieTag = 2205051138; @implementation TUIConversationCell (TUIPatch) + (void)load { NSError *error; [self jr_swizzleMethod:@selector(patch_layoutSubviews) withMethod:@selector(layoutSubviews) error:&error]; [self jr_swizzleMethod:@selector(patch_setHighlighted:animated:) withMethod:@selector(setHighlighted:animated:) error:&error]; [self jr_swizzleMethod:@selector(patch_setBackgroundColor:) withMethod:@selector(setBackgroundColor:) error:&error]; if (error) { NSLog(@"patch TUI error: %@", error); } } - (void)patch_layoutSubviews { [self patch_layoutSubviews]; for (UIView *subview in self.subviews) { if ([NSStringFromClass([subview class]) isEqualToString:@"_UITableViewCellSeparatorView"]) { subview.backgroundColor = [UIColor colorWithWhite:1.0 alpha:0.1]; subview.height = 0.5; subview.x = self.titleLabel.x; } else { subview.backgroundColor = [UIColor clearColor]; } } self.subTitleLabel.textColor = COLOR_WITH_RGB(0xB3B3B3); UserOtherInfo *info = [UserService userOtherInfoForUserID:self.convData.userID]; UILabel *relationLabel = [self patch_relationLabel]; if (info.relation_str.length > 0) { relationLabel.hidden = NO; relationLabel.text = info.relation_str; [relationLabel sizeToFit]; relationLabel.width += FIX_SIZE(6); relationLabel.height += FIX_SIZE(2); }else{ relationLabel.hidden = YES; } UIImageView *genderIcon = [self patch_genderIcon]; // info.gender_str = [NSString stringWithFormat:@"TH_%@",info.gender_str]; // genderIcon.image = ImageNamed([[info.gender_str lowercaseString] stringByAppendingString:@"_tag"]); #warning 1 if([info.gender_str isEqualToString:@"CD"]){ genderIcon.image = [UIImage imageNamed:@"TH_cd_tag"]; }else if([info.gender_str isEqualToString:@"TS"]){ genderIcon.image = [UIImage imageNamed:@"TH_ts_tag"]; }else{ genderIcon.image = [UIImage imageNamed:@"TH_zn_tag"]; } CGFloat maxTitleWidth = (self.timeLabel.x - FIX_SIZE(8) - self.titleLabel.x - (relationLabel.hidden ? 0 : relationLabel.width)) - (genderIcon.width + FIX_SIZE(10)); genderIcon.backgroundColor = [UIColor clearColor]; [self.titleLabel sizeToFit]; self.titleLabel.width = MIN(maxTitleWidth, self.titleLabel.width); genderIcon.x = self.titleLabel.right + FIX_SIZE(2); relationLabel.x = genderIcon.right + FIX_SIZE(8); genderIcon.centerY = relationLabel.centerY = self.titleLabel.centerY; relationLabel.backgroundColor = COLOR_WITH_RGB_A(0xFFBE00, 0.3); self.titleLabel.textColor = info.isVIP ? COLOR_WITH_RGB(0xFDCF7F) : [UIColor whiteColor]; self.backgroundColor = [UIColor clearColor]; PYImageView *vipTagImageView = [self patch_vipTagImageView]; vipTagImageView.hidden = !info.isVIP; vipTagImageView.right = self.headImageView.width; vipTagImageView.bottom = self.headImageView.height; self.headImageView.contentMode = UIViewContentModeScaleAspectFill; UIView *VipView = [self patch_nianVipView]; UIView* managerView = [self patch_managerView]; managerView.centerY = self.titleLabel.centerY; managerView.hidden = !info.is_manager; if (info.is_manager) { if(info.relation_str.length > 0){ managerView.left = relationLabel.right + 2; }else{ managerView.left = genderIcon.right + 2; } }else{ VipView.hidden = YES; } VipView.centerY = self.titleLabel.centerY; VipView.hidden = info.vip_kind!=10; if (info.vip_kind==10) { if(info.relation_str.length > 0){ VipView.left = relationLabel.right + 2; }else{ VipView.left = genderIcon.right + 2; } }else{ managerView.hidden = YES; } } - (void)patch_setBackgroundColor:(UIColor *)backgroundColor { [self patch_setBackgroundColor:[UIColor clearColor]]; } - (void)patch_setHighlighted:(BOOL)highlighted animated:(BOOL)animated { } - (UILabel *)patch_relationLabel { UILabel *relationLabel = [self viewWithTag:ReloadtionLabelTag]; if (relationLabel) { return relationLabel; } UILabel *label = [[UILabel alloc] init]; label.text = @"互关"; label.font = MT_FONT_REGULAR_SIZE(11); label.textColor = THEME_COLOR; [label sizeToFit]; label.textAlignment = NSTextAlignmentCenter; label.width += FIX_SIZE(8); label.height = FIX_SIZE(16); label.layer.cornerRadius = FIX_SIZE(5); label.clipsToBounds = YES; label.tag = ReloadtionLabelTag; [self addSubview:label]; return label; } - (UIImageView *)patch_genderIcon { UIImageView *genderIcon = [self viewWithTag:GenderIconImageViewTag]; if (genderIcon) { return genderIcon; } genderIcon = [[UIImageView alloc] init]; genderIcon.size = [User genderSize]; genderIcon.backgroundColor = [UIColor clearColor]; genderIcon.tag = GenderIconImageViewTag; [self addSubview:genderIcon]; return genderIcon; } - (PYImageView *)patch_vipTagImageView { PYImageView *vipTageImageView = [self.headImageView viewWithTag:VIPTageImageVieTag]; if (!vipTageImageView) { vipTageImageView = [[PYImageView alloc] init]; vipTageImageView.contentMode = UIViewContentModeScaleAspectFit; vipTageImageView.size = CGSizeMake(FIX_SIZE(12), FIX_SIZE(12)); vipTageImageView.tag = VIPTageImageVieTag; vipTageImageView.image = ImageNamed(@"vip_tag"); [self.headImageView addSubview:vipTageImageView]; vipTageImageView.hidden = YES; WeakSelf(self); [self.headImageView addTapWithAction:^{ [PYAppService showUserCardVCWithUserID:[UserService userIDFromIMUserID:weakself.convData.userID].intValue]; }]; } return vipTageImageView; } - (UIView *)patch_nianVipView{ UIView *managerView = [self viewWithTag:NianVipTageImageVieTag]; if (!managerView) { managerView = [[UIView alloc] init]; managerView.tag = NianVipTageImageVieTag; managerView.size = CGSizeMake(FIX_SIZE(34), FIX_SIZE(16)); managerView.layer.cornerRadius = managerView.height/2.0; managerView.layer.masksToBounds = YES; // gradient CAGradientLayer *gl = [CAGradientLayer layer]; gl.frame = CGRectMake(0,0,managerView.width,managerView.height); gl.startPoint = CGPointMake(0, 0.5); gl.endPoint = CGPointMake(1, 0.5); gl.colors = @[(__bridge id)HEX_COLOR(0xE4B18B).CGColor, (__bridge id)HEX_COLOR(0xFFF4EC).CGColor, (__bridge id)HEX_COLOR(0xE4B18B).CGColor]; gl.locations = @[@(0), @(0.5f), @(1.0f)]; [managerView.layer addSublayer:gl]; UILabel* managerLab = [[UILabel alloc]initWithFrame:managerView.bounds]; managerLab.text = @"年VIP"; managerLab.textColor = HEX_COLOR(0x000000); managerLab.textAlignment = NSTextAlignmentCenter; managerLab.font = MT_FONT_MEDIUM_SIZE(10); [managerView addSubview:managerLab]; [self addSubview:managerView]; return managerView; } return managerView; } - (UIView *)patch_managerView{ UIView *managerView = [self viewWithTag:ManagerTageImageVieTag]; if (!managerView) { managerView = [[UIView alloc] init]; managerView.tag = ManagerTageImageVieTag; managerView.size = CGSizeMake(FIX_SIZE(34), FIX_SIZE(16)); managerView.layer.cornerRadius = managerView.height/2.0; managerView.layer.masksToBounds = YES; // gradient CAGradientLayer *gl = [CAGradientLayer layer]; gl.frame = CGRectMake(0,0,managerView.width,managerView.height); gl.startPoint = CGPointMake(0, 0.5); gl.endPoint = CGPointMake(1, 0.5); gl.colors = @[(__bridge id)HEX_COLOR(0xE4B18B).CGColor, (__bridge id)HEX_COLOR(0xFFF4EC).CGColor, (__bridge id)HEX_COLOR(0xE4B18B).CGColor]; gl.locations = @[@(0), @(0.5f), @(1.0f)]; [managerView.layer addSublayer:gl]; UILabel* managerLab = [[UILabel alloc]initWithFrame:managerView.bounds]; managerLab.text = @"官方"; managerLab.textColor = HEX_COLOR(0x000000); managerLab.textAlignment = NSTextAlignmentCenter; managerLab.font = MT_FONT_MEDIUM_SIZE(10); [managerView addSubview:managerLab]; [self addSubview:managerView]; return managerView; } return managerView; } @end