234 lines
8.8 KiB
Objective-C
234 lines
8.8 KiB
Objective-C
//
|
|
// TUIConversationCell+TUIPatch.m
|
|
// TreeHole
|
|
//
|
|
// Created by mambaxie on 2022/4/25.
|
|
//
|
|
|
|
#import "TUIConversationCell+TUIPatch.h"
|
|
#import <JRSwizzle.h>
|
|
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
|