// // MSSessionPublicChatHalTextCell.m // YuMi // // Created by duoban on 2024/5/9. // #import "MSSessionPublicChatHalTextCell.h" #import "DJDKMIMOMColor.h" #import "NSObject+MJExtension.h" #import "QEmotionHelper.h" #import #import #import "SpriteSheetImageManager.h" #import "MessageHeadlinesTextModel.h" #import "XPMessageRemoteExtModel.h" #import "MessageContentChatHallHeadView.h" @interface MSSessionPublicChatHalTextCell () /** 消息文本 */ @property (nonatomic, strong) YYLabel * messageText; @property(nonatomic,strong) UIImageView *bgImage; ///气泡 @property (nonatomic,strong) NetImageView *bubbleImageView; @property(nonatomic,strong) MessageContentChatHallHeadView *avatarView; @end @implementation MSSessionPublicChatHalTextCell -(instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{ self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]; if(self){ [self installUI]; [self installConstraints]; } return self; } - (void)render:(nonnull MessageBaseModel *)model { MessageHeadlinesTextModel * textModel = (MessageHeadlinesTextModel *)model; XPMessageRemoteExtModel *extModel = textModel.extModel; if(extModel == nil)return; [self.avatarView render:model]; self.messageText.textColor = [UIColor whiteColor]; self.bubbleImageView.image = nil; NSString *iosBubbleUrl = extModel.iosBubbleUrl; _bgImage.image = [self resizableImage:kImage(@"ms_message_headlines_text_left")]; if(iosBubbleUrl.length > 0){ [self.bubbleImageView loadImageWithUrl:extModel.iosBubbleUrl completion:^(UIImage * _Nullable image, NSURL * _Nonnull url) { self.bgImage.image = nil; self.messageText.textColor = UIColorFromRGB(0x333333); UIImage *image1 = [UIImage imageWithCGImage:image.CGImage scale:2.0 orientation:UIImageOrientationUp]; self.bubbleImageView.image = [self resizableImage:image1]; }]; } self.messageText.attributedText = textModel.textAttribute; } -(void)installUI{ self.contentView.backgroundColor = [UIColor clearColor]; self.backgroundColor = [UIColor clearColor]; self.selectionStyle = UITableViewCellSelectionStyleNone; [self.contentView addSubview:self.avatarView]; [self.contentView addSubview:self.bgImage]; [self.contentView addSubview:self.bubbleImageView]; [self.contentView addSubview:self.messageText]; } -(void)installConstraints{ [self.avatarView mas_makeConstraints:^(MASConstraintMaker *make) { make.leading.trailing.top.equalTo(self.contentView); make.height.mas_equalTo(kGetScaleWidth(48)); }]; [self.messageText mas_makeConstraints:^(MASConstraintMaker *make) { make.top.mas_equalTo(kGetScaleWidth(55)); make.leading.mas_equalTo(kGetScaleWidth(82)); make.bottom.mas_equalTo(-kGetScaleWidth(10)); }]; [self.bgImage mas_makeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(self.messageText).offset(-kGetScaleWidth(10)); make.top.equalTo(self.messageText).offset(-kGetScaleWidth(10)); make.bottom.mas_equalTo(self.messageText).offset(kGetScaleWidth(10)); make.right.mas_equalTo(self.messageText).offset(kGetScaleWidth(10)); }]; [self.bubbleImageView mas_makeConstraints:^(MASConstraintMaker *make) { make.edges.equalTo(self.bgImage); }]; } #pragma mark - 懒加载 - (UIImage*)resizableImage:(UIImage *)image { //图片拉伸区域 CGFloat top = (image.size.height - 1) / 2; CGFloat left = (image.size.width - 1) / 2; CGFloat right = (image.size.width - 1) / 2; CGFloat bottom = (image.size.height - 1) / 2; return [image resizableImageWithCapInsets:UIEdgeInsetsMake(top, left, bottom, right) resizingMode:UIImageResizingModeStretch]; } - (UIImageView *)bgImage{ if(!_bgImage){ _bgImage = [UIImageView new]; _bgImage.image = [self resizableImage:kImage(@"ms_message_headlines_text_left")]; } return _bgImage; } - (NetImageView *)bubbleImageView{ if(!_bubbleImageView){ _bubbleImageView = [[NetImageView alloc] init]; } return _bubbleImageView; } - (YYLabel *)messageText { if (!_messageText) { _messageText = [[YYLabel alloc]initWithFrame:CGRectZero]; _messageText.textColor = DJDKMIMOMColor.mainTextColor; _messageText.numberOfLines = 0; _messageText.font = kFontMedium(14); _messageText.textColor = [UIColor whiteColor]; _messageText.textAlignment = NSTextAlignmentLeft; _messageText.userInteractionEnabled = YES; _messageText.preferredMaxLayoutWidth = kGetScaleWidth(220); } return _messageText; } - (MessageContentChatHallHeadView *)avatarView{ if(!_avatarView){ _avatarView = [[MessageContentChatHallHeadView alloc]initWithFrame:CGRectZero isSelf:NO]; } return _avatarView; } - (void)awakeFromNib { [super awakeFromNib]; // Initialization code } - (void)setSelected:(BOOL)selected animated:(BOOL)animated { [super setSelected:selected animated:animated]; // Configure the view for the selected state } @end