| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202 |
- //
- // MOTextTools.h
- // MiMoLive
- //
- // Created by SuperC on 2023/12/27.
- //
- #define MOTextLabelFont [UIFont systemFontOfSize:14.0] // textLabel的字体
- #define MOLevelLabelFont [MOTextTools getTheFontWithSize:10.0 AndFontName:kNormalTitleFontStr] //等级字体
- #define MOTextLabelLineSpacing 1.0 // textLabel行间距
- //UITextView.textContainer.lineFragmentPadding:文本容器的左右内边距(默认值为 5.0)。
- #define MOTextLabelMaxWidth (SCREENWIDTH - MOLiveMsgLeftSpacing - MOLiveMsgRightSpacing - MOContentOffSet * 2.0 - MOContentLeftAndRighSpacing * 2.0)
- #define MOTextLabelMinHeight 16 // text最小高度
- #define MOTextTitleLabeHeight 20.0 // textLabel的标题高度
- #define MOTextRedEnvelopeViewHeight 64.0 //红包View的高度
- #define MOTextLabelParagraphStyle [MOTextTools textLabelParagraphStyle] // textLabel的段落格式
- #define MOTextLabelAttributesDict @{NSFontAttributeName:MOTextLabelFont, NSParagraphStyleAttributeName:MOTextLabelParagraphStyle} // 设置textLabel.attributedText和计算文字高度所用的attributes
- #define MOLevelMixWidth 32.0 //小于10的宽度
- #define MOLevelNormalWidth 36.0 //小于100级 level View的宽度
- #define MOLevelMaxWidth 44.0 //大于100级 level View的宽度
- #define MOLevelNormalHeight 16.0 //level View的高度度
- #import <Foundation/Foundation.h>
- #import "MORtmEntity.h"
- #import "LiveGiftShowModel.h"
- NS_ASSUME_NONNULL_BEGIN
- @interface MOTextTools : NSObject
- //根据Rtm消息 生成 NSMutableAttributedString
- + (NSMutableAttributedString *)creteTextWith:(MORtmEntity *)rtmEntity;
- //系统消息 26的顶部提示
- + (NSMutableAttributedString *)createTheLevelUpNoticeWith:(MORtmEntity *)rtmEntity;
- ///组建 - 普通聊天头部
- + (NSMutableAttributedString *)creteTitleTextWith:(MORtmEntity *)rtmEntity;
- //根据Rtm消息, 生成进场条NSMutableAttributedString
- + (NSMutableAttributedString *)creteEnterTextWith:(MORtmEntity *)rtmEntity;
- //根据Rtm消息, 生成礼物数量NSMutableAttributedString
- + (NSMutableAttributedString *)creteGiftNumTextWith:(MORtmEntity *)rtmEntity;
- //根据返钻暴击 - 增加一条富文本
- + (NSMutableAttributedString *)creteTheHitDiamondTipWith:(MORtmEntity *)entity;
- //增加Vip 富文本
- + (NSMutableAttributedString *)toAddVipInfoWith:(NSMutableAttributedString *)contentStr And:(NSInteger)vipType;
- //增加 等级 富文本
- + (NSMutableAttributedString *)toAddLevelInfoWith:(NSMutableAttributedString *)contentStr And:(NSInteger)levelNum;
- //根据等级生成一个图标
- + (UIImage *)createLevelImageViewWith:(NSInteger)gradeNum;
- //返回对应等级的背景色
- + (UIColor *)getLevelColorWith:(NSInteger)gradeNum;
- //返回对应等级的图标 返回nil, 则说明该等级没有图标
- + (UIImage *)getLevelIconImgWith:(NSInteger)gradeNum;
- //根据vip等级获取vip图标
- + (nullable UIImage *)getVipIconWith:(NSInteger)vipType;
- //根据气泡code返回相应的气泡
- + (UIImage *)getBubbleImgWithCodeNum:(NSInteger)code;
- //生成图片不带黑色四角
- + (UIImage *)snapshotWithView:(UIView *)view;
- //根据Rtm消息, 计算高度
- + (CGSize)textMessageCellSizeWith:(MORtmEntity *)rtmEntity;
- //根据字符串, 计算高度
- + (CGSize)textMessageCellSizeWithString:(NSString *)contentStr;
- //根据Rtm消息, 计算宽度
- + (CGFloat)getWidthWith:(MORtmEntity *)rtmEntity;
- //根据NSAttributedString来计算宽度
- + (CGFloat)getTheAttributedTextWidthWith:(NSAttributedString *)contentStr;
- + (NSMutableParagraphStyle *)textLabelParagraphStyle;
- + (UIImage *)getFanLevelImgWith:(NSInteger)gradeNum;
- + (UIColor *)getFanLevelColorWith:(NSInteger)gradeNum;
- + (UIImage *)getFanLiveImgWith:(NSInteger)gradeNum;
- + (UIImage *)getTheFanClubMedalWith:(NSInteger)level;
- //单位换算
- + (NSString *)numberToStringWith:(double)num;
- + (NSString *)numberToStringAboutTwoWith:(double)num;
- //无小数点
- + (NSString *)numberToStringNoPointWith:(double)num;
- //任务 - 分钟 转 字符串
- + (NSString *)minuteStrWith:(double)minute;
- //数字格式化为每隔三位用逗号隔开
- + (NSString *)formatNumberDecimalValue:(double)value;
- /// 小数转成百分比,去除小数部分
- + (NSString *)formatPercentage:(double)value;
- /// MO-Pro-Display-HeavyItalic 斜体加粗
- /// @param fontSize 字号
- /// @param bold 加粗
- /// @param italic 斜体
- /// @param weight 加粗量级
- + (UIFont *)MODisplayFontWithSize:(CGFloat)fontSize
- bold:(BOOL)bold itatic:(BOOL)italic weight:(UIFontWeight)weight;
- + (UIFont *)getTheFontWithSize:(CGFloat)fontSize AndFontName:(NSString *)fontName;
- ///变更字体中的名字的颜色
- + (NSMutableAttributedString *)base_colorfulStringWith:(NSString *)contentStr AndNameStr:(NSString *)nameStr AndBaseColor:(NSString *)baseColorStr AndNameColor:(NSString *)nameColorStr;
- + (NSMutableAttributedString *)base_colorObjectStringWith:(NSString *)contentStr AndNameStr:(NSString *)nameStr AndBaseColor:(UIColor *)baseColor AndNameColor:(UIColor *)nameColor;
- ///相比于上一个方法 增加了描边 和 阴影 // 描边宽度,正数表示描边宽度,负数表示填充宽度
- + (NSMutableAttributedString *)base_colorfulStringWith:(NSString *)contentStr AndNameStr:(NSString *)nameStr AndBaseColor:(NSString *)baseColorStr AndNameColor:(NSString *)nameColorStr AndStrokeColor:(NSString *)strokeColorStr AndStrokeWidth:(NSInteger)strokeWidth AndShadowColor:(NSString *)shadowColorStr;
- ///变更字体中的颜色 - 按照最后查找原则
- + (NSMutableAttributedString *)base_backwardsSearchColorfulStringWith:(NSString *)contentStr AndNameStr:(NSString *)nameStr AndBaseColor:(NSString *)baseColorStr AndNameColor:(NSString *)nameColorStr;
- ///根据钻石数量 返回对应的图片 (钻石夺宝)
- + (UIImage *)getTheDiamondImageWith:(NSInteger)diamond;
- /// 根据选中人 以及 麦位上的数据 生成一个礼物飘屏提示字符串
- + (NSString *)toGetTheGiftTipTextWith:(NSArray *)linkMics And:(MOUserProfile *)anchor And:(NSArray *)sendUserIdArr;
- /// 给一个字符串增加删除线
- + (NSMutableAttributedString *)addDeleteLineWith:(NSString *)textStr andLineColor:(UIColor *)lineColor;
- /// 生成勋章富文本
- + (NSMutableAttributedString *)toCreateMedalInfoWithMedalListAnd:(NSArray *)medalList AndMedalWidth:(CGFloat)medalWidth AndUserBigImage:(BOOL)userBig AndSpaingStr:(NSString *)spacingStr;
- /// 根据用户信息生成一个富文本(VIP/性别/等级)
- + (NSAttributedString *)createAttributedStringWithUserInfo:(MOUserBase *)userBase;
- /// 根据YY富文本计算宽度
- + (CGFloat)getWidthAboutYYWith:(NSAttributedString *)contentStr;
- /**
- * 为文本中的指定部分设置颜色和下划线样式
- * @param label 目标UILabel
- * @param text 完整文本内容
- * @param targetText 需要设置样式的目标文本
- * @param color 目标文本的颜色
- * @param hasUnderline 是否添加下划线
- */
- + (void)setStyledTextForLabel:(UILabel *)label
- fullText:(NSString *)text
- targetText:(NSString *)targetText
- color:(UIColor *)color
- hasUnderline:(BOOL)hasUnderline;
- /**
- * 为UILabel添加点击事件
- * @param label 目标UILabel
- * @param target 点击事件的目标对象
- * @param action 点击事件的方法
- */
- + (void)addTapGestureToLabel:(UILabel *)label
- target:(id)target
- action:(SEL)action;
- /**
- * 一次性为多个文本片段设置样式(便利方法)
- * @param label 目标UILabel
- * @param fullText 完整文本内容
- * @param styleConfigs 样式配置数组,每个元素包含:targetText, color, hasUnderline
- */
- + (void)setMultipleStyledTextForLabel:(UILabel *)label
- fullText:(NSString *)fullText
- styleConfigs:(NSArray<NSDictionary *> *)styleConfigs;
- /**
- * 创建带有蓝色下划线的Feedback文本标签(保持向后兼容)
- * @param text 完整文本内容
- * @param feedbackText 需要设置样式的Feedback文本
- * @param target 点击事件的目标对象
- * @param action 点击事件的方法
- * @return 配置好的UILabel
- */
- + (UILabel *)createFeedbackLabelWithText:(NSString *)text
- feedbackText:(NSString *)feedbackText
- target:(id)target
- action:(SEL)action;
- + (UIFont *)oswaldDemiBoldFont:(CGFloat)size;
- + (UIFont *)poppinsLightFont:(CGFloat)size;
- + (UIFont *)poppinsRegularFont:(CGFloat)size;
- + (UIFont *)poppinsMediumFont:(CGFloat)size;
- + (UIFont *)poppinsBoldFont:(CGFloat)size;
- + (UIFont *)poppinsSemiBoldFont:(CGFloat)size;
- + (UIFont *)poppinsExtraBoldFont:(CGFloat)size;
- + (UIFont *)poppinskPoppinsMediumItalicFont:(CGFloat)size;
- + (UIFont *)poppinsBoldItalicFont:(CGFloat)size;
- + (UIFont *)lightFont:(CGFloat)size;
- + (UIFont *)regularFont:(CGFloat)size;
- + (UIFont *)mediumFont:(CGFloat)size;
- + (UIFont *)boldFont:(CGFloat)size;
- + (UIFont *)semiboldFont:(CGFloat)size;
- @end
- NS_ASSUME_NONNULL_END
|