100 lines
4.7 KiB
Objective-C
100 lines
4.7 KiB
Objective-C
//
|
|
// MessageHeadlinesTextModel.m
|
|
// YuMi
|
|
//
|
|
// Created by duoban on 2024/5/9.
|
|
//
|
|
|
|
#import "MessageHeadlinesTextModel.h"
|
|
#import "QEmotionHelper.h"
|
|
|
|
@implementation MessageHeadlinesTextModel
|
|
- (instancetype)initWithMessage:(NIMMessage *)message {
|
|
if (self = [super initWithMessage:message]) {
|
|
self.messageType = SessionMessageType_Text;
|
|
XPMessageRemoteExtModel *extModel = [XPMessageRemoteExtModel modelWithJSON:message.remoteExt[message.from]];
|
|
self.extModel = extModel;
|
|
self.isSelf = [[NIMSDK sharedSDK].loginManager.currentAccount isEqualToString:message.from];
|
|
NSString * messageText = message.text;
|
|
if (!messageText) {
|
|
messageText = YMLocalizedString(@"MessageTextModel0");
|
|
}
|
|
|
|
CGFloat width = [UILabel getWidthWithText:messageText height:kGetScaleWidth(36) font:kFontMedium(14)];
|
|
|
|
width = width > kGetScaleWidth(200) ? kGetScaleWidth(200) : width;
|
|
self.width = width >= kGetScaleWidth(220) ? kGetScaleWidth(220) : (width + kGetScaleWidth(25));
|
|
|
|
|
|
CGSize dstRect = CGSizeMake(width, MAXFLOAT);
|
|
QEmotionHelper *faceManager = [QEmotionHelper sharedEmotionHelper];
|
|
NSMutableAttributedString * attribute = [faceManager attributedStringByText:messageText font:kFontMedium(14)];
|
|
if(extModel.iosBubbleUrl.length > 0){
|
|
[attribute addAttributes:@{NSForegroundColorAttributeName: UIColorFromRGB(0x333333)} range:[attribute.string rangeOfString:attribute.string]];
|
|
}else{
|
|
[attribute addAttributes:@{NSForegroundColorAttributeName:self.isSelf ? UIColorFromRGB(0x333333) : [UIColor whiteColor]} range:[attribute.string rangeOfString:attribute.string]];
|
|
}
|
|
|
|
self.textAttribute = attribute;
|
|
YYTextContainer *container = [YYTextContainer containerWithSize:dstRect];
|
|
container.maximumNumberOfRows = 0;
|
|
YYTextLayout *layout = [YYTextLayout layoutWithContainer:container text:attribute];
|
|
CGFloat rowHeight = layout.textBoundingSize.height + kGetScaleWidth(25);
|
|
self.imageHeight = rowHeight;
|
|
self.height = (self.isSelf ? kGetScaleWidth(35) : kGetScaleWidth(65)) + rowHeight;
|
|
|
|
self.isHiddenAvatar = YES;
|
|
}
|
|
return self;
|
|
}
|
|
- (NSMutableAttributedString *)createUrlImageAttribute:(NSString *)imageUrl size:(CGSize)size {
|
|
NetImageConfig *config = [[NetImageConfig alloc]init];
|
|
///先这样吧
|
|
config.autoLoad = YES;
|
|
NetImageView *imageView = [[NetImageView alloc]initWithUrl:imageUrl config:config];
|
|
|
|
imageView.bounds = CGRectMake(0, 0, size.width, size.height);
|
|
imageView.layer.masksToBounds = YES;
|
|
imageView.contentMode = UIViewContentModeScaleAspectFit;
|
|
NSMutableAttributedString * attrString = [NSMutableAttributedString yy_attachmentStringWithContent:imageView contentMode:UIViewContentModeScaleAspectFit attachmentSize:CGSizeMake(imageView.bounds.size.width, imageView.bounds.size.height) alignToFont:[UIFont systemFontOfSize:15.0] alignment:YYTextVerticalAlignmentCenter];
|
|
return attrString;
|
|
}
|
|
/// 占位的富文本
|
|
/// @param width 需要的间隙
|
|
- (NSMutableAttributedString *)createSapceAttribute:(CGFloat)width {
|
|
UIView *spaceView = [[UIView alloc]init];
|
|
spaceView.backgroundColor = [UIColor clearColor];
|
|
spaceView.bounds = CGRectMake(0, 0, width, 10);
|
|
NSMutableAttributedString * attribute = [NSMutableAttributedString yy_attachmentStringWithContent:spaceView contentMode:UIViewContentModeScaleAspectFit attachmentSize:CGSizeMake(spaceView.frame.size.width, spaceView.frame.size.height) alignToFont:[UIFont systemFontOfSize:15.0] alignment:YYTextVerticalAlignmentCenter];
|
|
return attribute;
|
|
}
|
|
/// 生成一个富文本
|
|
/// @param text 富文本的文字
|
|
/// @param color 文字的颜色
|
|
/// @param font 文字的大小
|
|
- (NSMutableAttributedString *)createTextAttribute:(NSString *)text color:(UIColor *)color font:(UIFont *)font {
|
|
if (text == nil || text.length <= 0) {
|
|
text = @"";
|
|
}
|
|
NSMutableAttributedString *attribute = [[NSMutableAttributedString alloc] initWithString:text attributes:nil];
|
|
attribute.yy_font = font;
|
|
attribute.yy_color = color;
|
|
attribute.yy_paragraphStyle = [self paragraphStyle];
|
|
return attribute;
|
|
}
|
|
/// 设置文本的样式 间隙 缩进 ...
|
|
- (NSMutableParagraphStyle *)paragraphStyle {
|
|
NSMutableParagraphStyle *paraStyle = [[NSMutableParagraphStyle alloc] init];
|
|
paraStyle.lineSpacing = 4.0f;//行间距
|
|
// 强制排版(从左到右)
|
|
paraStyle.alignment = NSTextAlignmentLeft;
|
|
paraStyle.baseWritingDirection = NSWritingDirectionLeftToRight;
|
|
return paraStyle;
|
|
}
|
|
|
|
- (NSString *)cellContent:(MessageBaseModel *)model {
|
|
return @"MessageContentHeadLinesText";
|
|
}
|
|
|
|
@end
|