91 lines
2.8 KiB
Objective-C
91 lines
2.8 KiB
Objective-C
//
|
|
// MessageContentText.m
|
|
// YUMI
|
|
//
|
|
// Created by zu on 2021/12/2.
|
|
//
|
|
|
|
#import "MessageContentText.h"
|
|
#import "DJDKMIMOMColor.h"
|
|
#import "NSObject+MJExtension.h"
|
|
#import "QEmotionHelper.h"
|
|
#import <NIMSDK/NIMSDK.h>
|
|
#import <Masonry/Masonry.h>
|
|
|
|
#import "MessageTextModel.h"
|
|
#define MESSAGE_TEXT_PADDING 10
|
|
|
|
@interface MessageContentText()
|
|
|
|
/**
|
|
消息文本
|
|
*/
|
|
@property (nonatomic, strong) YYLabel * messageText;
|
|
|
|
///当前的消息
|
|
@property (nonatomic,strong) NIMMessage *message;
|
|
|
|
@end
|
|
|
|
@implementation MessageContentText
|
|
|
|
+ (NSDictionary<NSAttributedStringKey, id> *)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");
|
|
}
|
|
QEmotionHelper *faceManager = [QEmotionHelper sharedEmotionHelper];
|
|
NSMutableAttributedString * attribute = [faceManager attributedStringByText:messageText font:[UIFont systemFontOfSize:13]];
|
|
_messageText.attributedText = attribute;
|
|
}
|
|
[_messageText.superview layoutIfNeeded];
|
|
if(_messageText.frame.size.width > _messageText.preferredMaxLayoutWidth){
|
|
[_messageText mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
make.width.mas_equalTo(_messageText.preferredMaxLayoutWidth);
|
|
}];
|
|
}
|
|
}
|
|
-(void)aa{
|
|
NSLog(@"%f,%f",self.messageText.frame.size.width,(CONTENT_WIDTH_MAX - MESSAGE_TEXT_PADDING * 2));
|
|
}
|
|
- (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;
|
|
UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(aa)];
|
|
[_messageText addGestureRecognizer:tap];
|
|
}
|
|
return _messageText;
|
|
}
|
|
|
|
@end
|