Files
featherVoice/TUIKit/TUICustomerServicePlugin/UI_Classic/BaseCell/TUICustomerServicePluginCardCell.m
2025-08-08 10:49:36 +08:00

101 lines
3.7 KiB
Objective-C

//
// TUICustomerServicePluginCardCell.m
// TUICustomerServicePlugin
//
// Created by xia on 2023/5/30.
//
#import "TUICustomerServicePluginCardCell.h"
#import "TUICustomerServicePluginDataProvider.h"
#import "TUICustomerServicePluginDataProvider+CalculateSize.h"
@interface TUICustomerServicePluginCardCell()
@end
@implementation TUICustomerServicePluginCardCell
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier {
self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
if (self) {
_headerLabel = [[UILabel alloc] init];
_headerLabel.font = [UIFont systemFontOfSize:12];
_headerLabel.numberOfLines = 3;
_headerLabel.lineBreakMode = NSLineBreakByTruncatingTail;
_headerLabel.textColor = TUICustomerServicePluginDynamicColor(@"customer_service_card_header_text_color", @"#000000");
[self.container addSubview:_headerLabel];
_descLabel = [[UILabel alloc] init];
_descLabel.font = [UIFont systemFontOfSize:16];
_descLabel.numberOfLines = 1;
_descLabel.lineBreakMode = NSLineBreakByTruncatingTail;
_descLabel.textColor = TUICustomerServicePluginDynamicColor(@"customer_service_card_desc_text_color", @"#FF6C2E");
[self.container addSubview:_descLabel];
_picView = [[UIImageView alloc] init];
_picView.layer.cornerRadius = 8;
_picView.layer.masksToBounds = YES;
[self.container addSubview:_picView];
UITapGestureRecognizer *recognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(onTapped:)];
[self.container addGestureRecognizer:recognizer];
}
return self;
}
- (void)onTapped:(UITapGestureRecognizer *)recognizer {
NSURL *url = [NSURL URLWithString:self.customData.jumpURL ? : @""];
[TUITool openLinkWithURL:url];
}
- (void)fillWithData:(TUICustomerServicePluginCardCellData *)data {
[super fillWithData:data];
self.customData = data;
self.headerLabel.text = data.header;
self.descLabel.text = data.desc;
[self.picView sd_setImageWithURL:[NSURL URLWithString:data.picURL] placeholderImage:TUICustomerServicePluginBundleThemeImage(@"customer_service_card_pic_placeholder_img", @"card_pic_placeholder")];
// tell constraints they need updating
[self setNeedsUpdateConstraints];
// update constraints now so we can animate the change
[self updateConstraintsIfNeeded];
[self layoutIfNeeded];
}
// Override, the size of bubble content.
+ (CGSize)getContentSize:(TUICustomerServicePluginCardCellData *)data {
return CGSizeMake(TUICustomerServicePluginCardBubbleWidth, 112);
}
- (void)updateConstraints {
[super updateConstraints];
[self.picView mas_remakeConstraints:^(MASConstraintMaker *make) {
make.leading.mas_equalTo(14);
make.top.mas_equalTo(13);
make.width.mas_equalTo(86);
make.height.mas_equalTo(86);
}];
CGSize headerSize = [TUICustomerServicePluginDataProvider calcCardHeaderSize:self.customData.header];
[self.headerLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
make.leading.mas_equalTo(self.picView.mas_trailing).offset(12);
make.top.mas_equalTo(13);
make.width.mas_equalTo(headerSize.width);
make.height.mas_equalTo(headerSize.height);
}];
[self.descLabel mas_remakeConstraints:^(MASConstraintMaker *make) {
make.leading.mas_equalTo(self.picView.mas_trailing).offset(12);
make.bottom.mas_equalTo(self.container.mas_bottom).mas_offset(-13);
make.width.mas_equalTo(headerSize.width);
make.height.mas_equalTo(22);
}];
}
@end