159 lines
5.2 KiB
Objective-C
159 lines
5.2 KiB
Objective-C
//
|
|
// MSSessionPublicChatHalTextCell.m
|
|
// YuMi
|
|
//
|
|
// Created by duoban on 2024/5/9.
|
|
//
|
|
|
|
#import "MSSessionPublicChatHalTextCell.h"
|
|
|
|
#import "DJDKMIMOMColor.h"
|
|
#import "NSObject+MJExtension.h"
|
|
#import "QEmotionHelper.h"
|
|
#import <NIMSDK/NIMSDK.h>
|
|
#import <Masonry/Masonry.h>
|
|
#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
|