443 lines
22 KiB
Objective-C
443 lines
22 KiB
Objective-C
//
|
|
// XPRoomMessageParser.m
|
|
// xplan-ios
|
|
//
|
|
// Created by 冯硕 on 2021/10/26.
|
|
//
|
|
|
|
#import "XPRoomMessageParser.h"
|
|
#import <YYText/YYText.h>
|
|
#import <NIMSDK/NIMSDK.h>
|
|
///Tool
|
|
#import "ThemeColor+Room.h"
|
|
#import "XPRoomMessageConstant.h"
|
|
#import "AccountInfoStorage.h"
|
|
#import "XPMacro.h"
|
|
#import "XPGiftStorage.h"
|
|
///Model
|
|
#import "XPMessageRemoteExtModel.h"
|
|
#import "AttachMentModel.h"
|
|
#import "GiftReceiveInfoModel.h"
|
|
#import "XPKickUserModel.h"
|
|
#import "MicroQueueModel.h"
|
|
#import "UserInfoModel.h"
|
|
#import "MicroStateModel.h"
|
|
|
|
#import "NetImageView.h"
|
|
|
|
#import "XPUserCardViewController.h"
|
|
|
|
|
|
@implementation XPRoomMessageParser
|
|
|
|
- (NSAttributedString*)parseMessageAttribute:(NIMMessage *)message {
|
|
NIMMessageType messageType = message.messageType;
|
|
switch (messageType) {
|
|
case NIMMessageTypeText:
|
|
return [self makeChatAttribute:message];
|
|
|
|
case NIMMessageTypeTip:
|
|
return [self makeTipsAttribute:message];
|
|
|
|
case NIMMessageTypeNotification:
|
|
return [self makeNotificationAttribute:message];
|
|
|
|
case NIMMessageTypeCustom:
|
|
return [self makeCustomAttribute:message];
|
|
default:
|
|
return nil;
|
|
}
|
|
}
|
|
|
|
/// 用户公屏聊天
|
|
- (NSAttributedString *)makeCustomAttribute:(NIMMessage *)message {
|
|
NIMCustomObject *obj = (NIMCustomObject *)message.messageObject;
|
|
AttachmentModel *attachment = (AttachmentModel *)obj.attachment;
|
|
XPMessageRemoteExtModel * model = [XPMessageRemoteExtModel modelWithJSON:message.remoteExt[message.from]];
|
|
int first = attachment.first;
|
|
if (first == CustomMessageType_Gift) {///单人送
|
|
return [self createSendGiftAttribute:attachment sendInfo:model];
|
|
} else if(first == CustomMessageType_AllMicroSend) {///全麦送 多人送
|
|
return [self createBatchMicroSendGiftAttribute:attachment sendInfo:model];
|
|
} else if(first == CustomMessageType_Room_Tip) {///分享/收藏房间
|
|
return [self createShareOrAttentionRoomAttribute:attachment sendInfo:model uid:message.from];
|
|
} else if(first == CustomMessageType_Kick_User || first == CustomMessageType_Queue) {
|
|
XPKickUserModel * kickModel = [XPKickUserModel modelWithJSON:attachment.data];
|
|
return [self createKickUserAttribute:attachment info:kickModel];
|
|
}
|
|
return nil;
|
|
}
|
|
|
|
/// @param message 消息的实体
|
|
- (NSAttributedString*)makeChatAttribute:(NIMMessage *)message{
|
|
NSString * uid = [AccountInfoStorage instance].getUid;
|
|
XPMessageRemoteExtModel * model = [XPMessageRemoteExtModel modelWithJSON:message.remoteExt[message.from]];
|
|
NSString * nick = [NSString stringWithFormat:@"%@:", ((NIMMessageChatroomExtension *)message.messageExt).roomNickname];
|
|
if ([message.from isEqualToString:uid]) {
|
|
nick = @"我:";
|
|
}
|
|
NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init];
|
|
///官方新用户
|
|
[attribute appendAttributedString:[self createOfficalAndNewuserAttribute:model.defUser newUser:model.newUser]];
|
|
if (model.experUrl) {
|
|
[attribute appendAttributedString:[self createUrlImageAttribute:model.experUrl]];
|
|
[attribute appendAttributedString:[self createSapceAttribute:2]];
|
|
}
|
|
[attribute appendAttributedString:[self createTextAttribute:nick color:[ThemeColor messageDefaultTextColor] font:kRoomMessageDefalutFont]];
|
|
[attribute appendAttributedString:[self createSapceAttribute:2]];
|
|
[attribute appendAttributedString:[self createTextAttribute:message.text color:[ThemeColor messageTextColor] font:kRoomMessageDefalutFont]];
|
|
[self attributeAddHihtLight:attribute uid:message.from.integerValue];
|
|
return attribute;
|
|
}
|
|
|
|
/// 房间tips消息
|
|
/// @param message 消息的实体
|
|
- (NSAttributedString*)makeTipsAttribute:(NIMMessage *)message {
|
|
return [self createTextAttribute:message.text color:[ThemeColor messageDefaultTextColor] font:kRoomMessageDefalutFont];
|
|
}
|
|
|
|
/// 房间通知类消息
|
|
/// @param message 消息的实体
|
|
- (NSAttributedString*)makeNotificationAttribute:(NIMMessage *)message {
|
|
NIMNotificationObject *notiMsg = (NIMNotificationObject *)message.messageObject;
|
|
NIMChatroomNotificationContent *content = (NIMChatroomNotificationContent *)notiMsg.content;
|
|
NIMChatroomNotificationMember *member = content.targets[0];
|
|
switch (content.eventType) {
|
|
case NIMChatroomEventTypeEnter:///进入房间
|
|
{
|
|
NSString* nick = member.nick.length > 0 ? member.nick : @"";
|
|
NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init];
|
|
[attribute appendAttributedString:[self createTextAttribute:nick color:[ThemeColor messageNickColor] font:kRoomMessageDefalutFont]];
|
|
[attribute appendAttributedString:[self createTextAttribute:@"进入了房间" color:[ThemeColor messageDefaultTextColor] font:kRoomMessageDefalutFont]];
|
|
[self attributeAddHihtLight:attribute uid:message.from.integerValue];
|
|
return attribute;
|
|
}
|
|
case NIMChatroomEventTypeInfoUpdated:///房间信息更新
|
|
return [self createRoomInfoUpdateAttribute:content.notifyExt];
|
|
|
|
default:
|
|
return nil;
|
|
}
|
|
}
|
|
|
|
#pragma mark - 房间信息更新
|
|
///房间信息更新
|
|
- (NSAttributedString*)createRoomInfoUpdateAttribute:(NSString *)notifyExt {
|
|
return nil;
|
|
}
|
|
|
|
#pragma mark - 踢出房间/拉黑/下麦
|
|
- (NSAttributedString *)createKickUserAttribute:(AttachmentModel *)attachment info:(XPKickUserModel *)info {
|
|
NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init];
|
|
[attribute appendAttributedString:[self createNickAtrribute:info.targetNick uid:info.targetUid]];
|
|
[attribute appendAttributedString:[self createTextAttribute:@"被" color:[ThemeColor messageDefaultTextColor] font:kRoomMessageDefalutFont]];
|
|
[attribute appendAttributedString:[self createNickAtrribute:info.handleNick uid:info.handleUid]];
|
|
NSString * content= @"";
|
|
if (attachment.second == Custom_Message_Sub_Kick_BeKicked) {
|
|
content = @"请出房间";
|
|
} else if(attachment.second == Custom_Message_Sub_Kick_BlackList) {
|
|
content = @"关进小黑屋";
|
|
} else if(attachment.second == Custom_Message_Sub_Queue_Kick) {
|
|
content = @"请下麦";
|
|
}
|
|
[attribute appendAttributedString:[self createTextAttribute:content color:[ThemeColor messageDefaultTextColor] font:kRoomMessageDefalutFont]];
|
|
return attribute;
|
|
}
|
|
|
|
|
|
#pragma mark - 收藏房间和分享房间
|
|
- (NSAttributedString *)createShareOrAttentionRoomAttribute:(AttachmentModel *)attachment sendInfo:(XPMessageRemoteExtModel *)sendInfo uid:(NSString *)uid {
|
|
NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init];
|
|
NSDictionary *data = attachment.data[@"data"];
|
|
NSString *nick = [NSString stringWithFormat:@"%@",data[@"nick"]];
|
|
[attribute appendAttributedString:[self createTextAttribute:nick color:[ThemeColor messageNickColor] font:kRoomMessageDefalutFont]];
|
|
NSString *tipString = @"";
|
|
if (attachment.second == Custom_Message_Sub_Room_Tip_ShareRoom) {
|
|
tipString = @"分享了房间";
|
|
}else if (attachment.second == Custom_Message_Sub_Room_Tip_Attention_Owner) {
|
|
tipString = @"关注了房主";
|
|
}
|
|
[attribute appendAttributedString:[self createTextAttribute:tipString color:[ThemeColor messageDefaultTextColor] font:kRoomMessageDefalutFont]];
|
|
[self attributeAddHihtLight:attribute uid:uid.integerValue];
|
|
return attribute;
|
|
}
|
|
|
|
#pragma mark - 送礼物的公屏
|
|
- (NSAttributedString *)createBatchMicroSendGiftAttribute:(AttachmentModel *)attachment sendInfo:(XPMessageRemoteExtModel *)sendInfo {
|
|
NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init];
|
|
GiftReceiveInfoModel *info = [GiftReceiveInfoModel modelWithJSON:attachment.data];
|
|
GiftInfoModel *giftInfo = info.gift == nil ? info.giftInfo : info.gift;
|
|
if (giftInfo == nil) {
|
|
giftInfo = [[XPGiftStorage shareStorage] findGiftInfo:info.giftId];
|
|
}
|
|
///官方新用户
|
|
[attribute appendAttributedString:[self createOfficalAndNewuserAttribute:sendInfo.defUser newUser:sendInfo.newUser]];
|
|
//nick
|
|
[attribute appendAttributedString:[self createNickAtrribute:info.nick uid:info.uid.integerValue]];
|
|
[attribute appendAttributedString:[self createSapceAttribute:2]];
|
|
if (attachment.second == Custom_Message_Sub_AllBatchSend || attachment.second == Custom_Message_Sub_AllMicroSend) {///普通礼物
|
|
if (attachment.second == Custom_Message_Sub_AllBatchSend) {
|
|
//打赏
|
|
[attribute appendAttributedString:[self createTextAttribute:@" 打赏 " color:[ThemeColor messageDefaultTextColor] font:kRoomMessageDefalutFont]];
|
|
[attribute appendAttributedString:[self createSapceAttribute:2]];
|
|
for (int i = 0; i < info.targetUsers.count; i++) {
|
|
GiftReceiveUserInfoModel *targetInfo = [info.targetUsers objectAtIndex:i];
|
|
//nick
|
|
[attribute appendAttributedString:[self createNickAtrribute:targetInfo.nick uid:targetInfo.uid]];
|
|
[attribute appendAttributedString:[self createSapceAttribute:2]];
|
|
if (i < (info.targetUsers.count -1)) {
|
|
//nick
|
|
[attribute appendAttributedString:[self createTextAttribute:@"," color:[ThemeColor messageNickColor] font:kRoomMessageDefalutFont]];
|
|
[attribute appendAttributedString:[self createSapceAttribute:2]];
|
|
}
|
|
}
|
|
} else {
|
|
//打赏
|
|
[attribute appendAttributedString:[self createTextAttribute:@" 全麦打赏 " color:[ThemeColor messageDefaultTextColor] font:kRoomMessageDefalutFont]];
|
|
[attribute appendAttributedString:[self createSapceAttribute:2]];
|
|
}
|
|
|
|
//img
|
|
if (giftInfo.giftUrl) {
|
|
[attribute appendAttributedString:[self createUrlImageAttribute:giftInfo.giftUrl]];
|
|
[attribute appendAttributedString:[self createSapceAttribute:2]];
|
|
}
|
|
|
|
//x N
|
|
[attribute appendAttributedString:[self createTextAttribute:[NSString stringWithFormat:@" X%ld",info.giftNum] color:[ThemeColor messageTextColor] font:kRoomMessageDefalutFont]];
|
|
} else if(attachment.second == Custom_Message_Sub_AllMicroLuckySend || attachment.second == Custom_Message_Sub_AllBatchMicroLuckySend) {///福袋礼物
|
|
//action
|
|
NSString * sendTitle = @" 送出 ";
|
|
if (attachment.second == Custom_Message_Sub_AllMicroLuckySend) {
|
|
sendTitle = @" 全麦送出 ";
|
|
}
|
|
//打赏
|
|
[attribute appendAttributedString:[self createTextAttribute:sendTitle color:[ThemeColor messageDefaultTextColor] font:kRoomMessageDefalutFont]];
|
|
[attribute appendAttributedString:[self createSapceAttribute:2]];
|
|
|
|
// 福袋名称
|
|
[attribute appendAttributedString:[self createTextAttribute:info.giftName color:[ThemeColor messageTextColor] font:kRoomMessageDefalutFont]];
|
|
[attribute appendAttributedString:[self createSapceAttribute:2]];
|
|
|
|
// 福袋名称
|
|
[attribute appendAttributedString:[self createTextAttribute:@" 给 " color:[ThemeColor messageDefaultTextColor] font:kRoomMessageDefalutFont]];
|
|
[attribute appendAttributedString:[self createSapceAttribute:2]];
|
|
if (info.luckyGiftList) {
|
|
//target
|
|
[attribute appendAttributedString:[self createNickAtrribute:info.luckyGiftList.user.nick uid:info.luckyGiftList.user.uid]];
|
|
[attribute appendAttributedString:[self createSapceAttribute:2]];
|
|
|
|
// 福袋名称
|
|
[attribute appendAttributedString:[self createTextAttribute:@" 爆出了 " color:[ThemeColor messageDefaultTextColor] font:kRoomMessageDefalutFont]];
|
|
[attribute appendAttributedString:[self createSapceAttribute:2]];
|
|
|
|
[info.luckyGiftList.giftList enumerateObjectsUsingBlock:^(GiftListsInfo * _Nonnull giftListInfo, NSUInteger idx, BOOL * _Nonnull stop) {
|
|
GiftInfoModel *luckGiftInfo = [[XPGiftStorage shareStorage] findGiftInfo:[NSString stringWithFormat:@"%ld", giftListInfo.giftId]];;
|
|
// 价值
|
|
[attribute appendAttributedString:[self createTextAttribute:@"价值" color:[ThemeColor messageDefaultTextColor] font:kRoomMessageDefalutFont]];
|
|
[attribute appendAttributedString:[self createSapceAttribute:2]];
|
|
// 礼物价格
|
|
[attribute appendAttributedString:[self createTextAttribute:[NSString stringWithFormat:@"%ld",(NSInteger)giftInfo.goldPrice] color:[ThemeColor messageTextColor] font:kRoomMessageDefalutFont]];
|
|
// 的礼物
|
|
[attribute appendAttributedString:[self createTextAttribute:@"钻石的礼物" color:[ThemeColor messageDefaultTextColor] font:kRoomMessageDefalutFont]];
|
|
//img
|
|
[attribute appendAttributedString:[self createUrlImageAttribute:luckGiftInfo.giftUrl]];
|
|
[attribute appendAttributedString:[self createSapceAttribute:2]];
|
|
|
|
//x N
|
|
[attribute appendAttributedString:[self createTextAttribute: [NSString stringWithFormat:@" X%ld",giftListInfo.giftNum] color:[ThemeColor messageTextColor] font:kRoomMessageDefalutFont]];
|
|
if (info.luckyGiftList.giftList.count-1 != idx) {
|
|
//,
|
|
[attribute appendAttributedString:[self createTextAttribute:@"," color:[ThemeColor messageDefaultTextColor] font:kRoomMessageDefalutFont]];
|
|
}
|
|
}];
|
|
}
|
|
}
|
|
return attribute;
|
|
}
|
|
|
|
- (NSAttributedString *)createSendGiftAttribute:(AttachmentModel *)attachment sendInfo:(XPMessageRemoteExtModel *)sendInfo {
|
|
NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init];
|
|
GiftReceiveInfoModel *info = [GiftReceiveInfoModel modelWithJSON:attachment.data];
|
|
GiftInfoModel *giftInfo = info.gift == nil ? info.giftInfo : info.gift;
|
|
if (giftInfo == nil) {
|
|
giftInfo = [[XPGiftStorage shareStorage] findGiftInfo:info.giftId];
|
|
}
|
|
///官方新用户
|
|
[attribute appendAttributedString:[self createOfficalAndNewuserAttribute:sendInfo.defUser newUser:sendInfo.newUser]];
|
|
//nick
|
|
[attribute appendAttributedString:[self createNickAtrribute:info.nick uid:info.uid.integerValue]];
|
|
[attribute appendAttributedString:[self createSapceAttribute:2]];;
|
|
if (attachment.second == Custom_Message_Sub_Gift_LuckySend) {
|
|
//action
|
|
[attribute appendAttributedString:[self createTextAttribute:@"送出" color:[ThemeColor messageDefaultTextColor] font:kRoomMessageDefalutFont]];
|
|
// 福袋名称
|
|
[attribute appendAttributedString:[self createTextAttribute:info.giftName color:[ThemeColor messageTextColor] font:kRoomMessageDefalutFont]];
|
|
|
|
[attribute appendAttributedString:[self createTextAttribute:@"给" color:[ThemeColor messageDefaultTextColor] font:kRoomMessageDefalutFont]];
|
|
//target
|
|
[attribute appendAttributedString:[self createNickAtrribute:info.luckyGiftList.user.nick uid:info.luckyGiftList.user.uid]];
|
|
[attribute appendAttributedString:[self createSapceAttribute:2]];
|
|
//lucky
|
|
[attribute appendAttributedString:[self createTextAttribute:@"爆出了" color:[ThemeColor messageDefaultTextColor] font:kRoomMessageDefalutFont]];
|
|
[info.luckyGiftList.giftList enumerateObjectsUsingBlock:^(GiftListsInfo * _Nonnull giftListInfo, NSUInteger idx, BOOL * _Nonnull stop) {
|
|
GiftInfoModel *luckyGiftInfo = [[XPGiftStorage shareStorage] findGiftInfo:[NSString stringWithFormat:@"%ld", giftListInfo.giftId]];
|
|
// 价值
|
|
[attribute appendAttributedString: [self createTextAttribute:@"价值" color:[ThemeColor messageDefaultTextColor] font:kRoomMessageDefalutFont]];
|
|
[attribute appendAttributedString:[self createSapceAttribute:2]];
|
|
// 礼物价格
|
|
[attribute appendAttributedString:[self createTextAttribute:[NSString stringWithFormat:@"%ld",(NSInteger)giftInfo.goldPrice] color:[ThemeColor messageTextColor] font:kRoomMessageDefalutFont]];
|
|
// 的礼物
|
|
[attribute appendAttributedString: [self createTextAttribute:@"钻石的礼物" color:[ThemeColor messageDefaultTextColor] font:kRoomMessageDefalutFont]];
|
|
//img
|
|
[attribute appendAttributedString:[self createUrlImageAttribute:luckyGiftInfo.giftUrl]];
|
|
[attribute appendAttributedString:[self createSapceAttribute:2]];
|
|
//x N
|
|
[attribute appendAttributedString:[self createTextAttribute: [NSString stringWithFormat:@" X%ld",giftListInfo.giftNum] color:[ThemeColor messageTextColor] font:kRoomMessageDefalutFont]];
|
|
if (info.luckyGiftList.giftList.count-1 != idx) {
|
|
//,
|
|
[attribute appendAttributedString: [self createTextAttribute:@"," color:[ThemeColor messageDefaultTextColor] font:kRoomMessageDefalutFont]];
|
|
}
|
|
}];
|
|
} else {
|
|
//打赏
|
|
[attribute appendAttributedString:[self createTextAttribute:@" 打赏 " color:[ThemeColor messageDefaultTextColor] font:kRoomMessageDefalutFont]];
|
|
[attribute appendAttributedString:[self createSapceAttribute:2]];
|
|
//target
|
|
[attribute appendAttributedString: [self createNickAtrribute:info.targetNick uid:info.targetUid.integerValue]];
|
|
[attribute appendAttributedString:[self createSapceAttribute:2]];
|
|
//img
|
|
[attribute appendAttributedString:[self createUrlImageAttribute:giftInfo.giftUrl]];
|
|
[attribute appendAttributedString:[self createSapceAttribute:2]];
|
|
//x N
|
|
[attribute appendAttributedString:[self createTextAttribute:[NSString stringWithFormat:@" X%ld",info.giftNum] color:[ThemeColor messageTextColor] font:kRoomMessageDefalutFont]];
|
|
}
|
|
return attribute;
|
|
}
|
|
|
|
#pragma mark - Commond Mehotd
|
|
- (NSAttributedString *)createOfficalAndNewuserAttribute:(UserLevelType)levelType newUser:(BOOL)newUser {
|
|
NSMutableAttributedString * attribute = [[NSMutableAttributedString alloc] init];
|
|
//offical
|
|
if (levelType == UserLevelType_Offical) {
|
|
[attribute appendAttributedString: [self createLocalImageAttribute:@"common_offical"]];
|
|
[attribute appendAttributedString:[self createSapceAttribute:2]];
|
|
}
|
|
if (newUser) {
|
|
[attribute appendAttributedString: [self createLocalImageAttribute:@"common_new_user"]];
|
|
[attribute appendAttributedString:[self createSapceAttribute:2]];
|
|
}
|
|
return attribute;
|
|
}
|
|
|
|
///名字点击的
|
|
- (NSMutableAttributedString *)createNickAtrribute:(NSString *)nick uid:(NSInteger)uid {
|
|
NSMutableAttributedString * attribute = [self createTextAttribute:nick color:[ThemeColor messageNickColor] font:kRoomMessageDefalutFont];
|
|
[self attributeAddHihtLight:attribute uid:uid];
|
|
return attribute;
|
|
}
|
|
|
|
- (void)attributeAddHihtLight:(NSMutableAttributedString *)attribute uid:(NSInteger)uid {
|
|
@kWeakify(self);
|
|
[attribute yy_setTextHighlightRange:NSMakeRange(0, attribute.length) color:nil backgroundColor:nil tapAction:^(UIView * _Nonnull containerView, NSAttributedString * _Nonnull text, NSRange range, CGRect rect) {
|
|
@kStrongify(self);
|
|
if (uid <= 0) {return;}
|
|
[self showUserCard:uid];
|
|
}];
|
|
}
|
|
|
|
- (void)showUserCard:(NSInteger)uid {
|
|
NSString * targetUid = [NSString stringWithFormat:@"%ld", uid];
|
|
XPUserCardInfoModel * model = [[XPUserCardInfoModel alloc] init];
|
|
[[self.hostDelegate.getMicroQueue allValues] enumerateObjectsUsingBlock:^(MicroQueueModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) {
|
|
if (uid == obj.userInfo.uid) {
|
|
model.position = [NSString stringWithFormat:@"%d", obj.microState.position];
|
|
model.posState = (UserCardMicroPosStateType)obj.microState.posState;
|
|
model.micState = (UserCardMicroMicStateType)obj.microState.micState;
|
|
*stop = YES;
|
|
}
|
|
}];
|
|
model.uid = targetUid;
|
|
XPUserCardViewController * userCardVC = [[XPUserCardViewController alloc] initWithUser:model delegate:self.hostDelegate];
|
|
[self.hostDelegate.getCurrentNav presentViewController:userCardVC animated:YES completion:nil];
|
|
}
|
|
|
|
#pragma mark - private base methods
|
|
/// 生成一个图片的富文本
|
|
/// @param imageUrl 网络图片的地址
|
|
- (NSMutableAttributedString *)createUrlImageAttribute:(NSString *)imageUrl {
|
|
NetImageConfig *config = [[NetImageConfig alloc]init];
|
|
///先这样吧
|
|
config.autoLoad = YES;
|
|
NetImageView *imageView = [[NetImageView alloc]initWithUrl:imageUrl config:config];
|
|
UIImage* image = imageView.image;
|
|
if (image) {
|
|
CGFloat scale = image.size.width / image.size.height;
|
|
imageView.bounds = CGRectMake(0, 0, 20 * scale, 20);
|
|
} else {
|
|
imageView.bounds = CGRectMake(0, 0, 20, 20);
|
|
}
|
|
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 imageName 网络图片的地址
|
|
- (NSMutableAttributedString *)createLocalImageAttribute:(NSString *)imageName {
|
|
if (imageName == nil && imageName.length <= 0) {
|
|
return nil;
|
|
}
|
|
return [self createImageAttribute:[UIImage imageNamed:imageName]];
|
|
}
|
|
|
|
/// 生成本地一个图片的富文本
|
|
/// @param image 本地的图片
|
|
- (NSMutableAttributedString *)createImageAttribute:(UIImage *)image {
|
|
UIImageView *imaveView = [[UIImageView alloc]init];
|
|
imaveView.image = image;
|
|
CGFloat scale = (CGFloat)imaveView.image.size.width / (CGFloat)imaveView.image.size.height;
|
|
imaveView.bounds = CGRectMake(0, 0, 16 * scale, 16);
|
|
NSMutableAttributedString * attrString = [NSMutableAttributedString yy_attachmentStringWithContent:imaveView contentMode:UIViewContentModeScaleAspectFit attachmentSize:CGSizeMake(imaveView.frame.size.width, imaveView.frame.size.height) alignToFont:[UIFont systemFontOfSize:15.0] alignment:YYTextVerticalAlignmentCenter];
|
|
return attrString;
|
|
}
|
|
|
|
/// 生成一个富文本
|
|
/// @param text 富文本的文字
|
|
/// @param color 文字的颜色
|
|
/// @param font 文字的大小
|
|
- (NSMutableAttributedString *)createTextAttribute:(NSString *)text color:(UIColor *)color font:(CGFloat)font {
|
|
if (text == nil || text.length <= 0) {
|
|
text = @"";
|
|
}
|
|
NSMutableAttributedString *attribute = [[NSMutableAttributedString alloc] initWithString:text attributes:nil];
|
|
attribute.yy_font = [UIFont systemFontOfSize: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;
|
|
}
|
|
|
|
/// 占位的富文本
|
|
/// @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;
|
|
}
|
|
|
|
@end
|