// // MessageContentText.m // YUMI // // Created by zu on 2021/12/2. // #import "MessageContentText.h" #import "DJDKMIMOMColor.h" #import "NSObject+MJExtension.h" #import "QEmotionHelper.h" #import #import #import "MessageTextModel.h" #define MESSAGE_TEXT_PADDING 10 @interface MessageContentText() /** 消息文本 */ @property (nonatomic, strong) YYLabel * messageText; ///当前的消息 @property (nonatomic,strong) NIMMessage *message; @end @implementation MessageContentText + (NSDictionary *)messageTextAttibutes { UIFont *font = [UIFont systemFontOfSize:13.f]; NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; [paragraphStyle setLineSpacing:2.5]; return @{ NSFontAttributeName:font, NSParagraphStyleAttributeName: paragraphStyle }; } - (instancetype)init { self = [super init]; if (self) { [self addSubview:self.messageText]; [self.messageText mas_makeConstraints:^(MASConstraintMaker *make) { make.edges.equalTo(self).with.insets(UIEdgeInsetsMake(MESSAGE_TEXT_PADDING, MESSAGE_TEXT_PADDING, MESSAGE_TEXT_PADDING, MESSAGE_TEXT_PADDING)); }]; } return self; } - (void)render:(nonnull MessageBaseModel *)model { self.message = model.message; if (model.messageType == SessionMessageType_Text) { MessageTextModel * textModel = (MessageTextModel *)model; _messageText.attributedText = textModel.textAttribute; } else { NSString * messageText = model.message.text; if (!messageText || (model.message.messageType != NIMMessageTypeTip && model.message.messageType != NIMMessageTypeText)) { // messageText = YMLocalizedString(@"MessageContentText0"); messageText = [NSString stringWithFormat:@"%@\n%@", YMLocalizedString(@"MessageContentText0"), model.message.rawAttachContent]; } QEmotionHelper *faceManager = [QEmotionHelper sharedEmotionHelper]; NSMutableAttributedString * attribute = [faceManager attributedStringByText:messageText font:[UIFont systemFontOfSize:13] forMessageBubble:YES]; _messageText.attributedText = attribute; } [_messageText.superview layoutIfNeeded]; if(_messageText.frame.size.width > _messageText.preferredMaxLayoutWidth){ [_messageText mas_makeConstraints:^(MASConstraintMaker *make) { make.width.mas_equalTo(_messageText.preferredMaxLayoutWidth); }]; } } - (YYLabel *)messageText { if (!_messageText) { _messageText = [[YYLabel alloc]initWithFrame:CGRectZero]; _messageText.preferredMaxLayoutWidth = CONTENT_WIDTH_MAX - MESSAGE_TEXT_PADDING * 2; _messageText.textColor = DJDKMIMOMColor.mainTextColor; _messageText.numberOfLines = 0; _messageText.userInteractionEnabled = YES; } return _messageText; } @end