本文共 2286 字,大约阅读时间需要 7 分钟。
// NSAttributedString+Additon.h#import@interface NSAttributedString (Additon)/// 使用图像和文本生成上下排列的属性文本////// @param image 图像/// @param imageWH 图像宽高/// @param title 标题文字/// @param fontSize 标题字体大小/// @param titleColor 标题颜色/// @param spacing 图像和标题间距////// @return 属性文本+ (instancetype)imageTextWithImage:(UIImage*)image imageWH:(CGFloat)imageWH title:(NSString*)title fontSize:(CGFloat)fontSize titleColor:(UIColor*)titleColor spacing:(CGFloat)spacing;@end
//// NSAttributedString+Additon.m#import "NSAttributedString+Additon.h"@implementation NSAttributedString (Additon)+ (instancetype)imageTextWithImage:(UIImage *)image imageWH:(CGFloat)imageWH title:(NSString *)title fontSize:(CGFloat)fontSize titleColor:(UIColor *)titleColor spacing:(CGFloat)spacing { // 文本字典 NSDictionary *titleDict = @{NSFontAttributeName : [UIFont systemFontOfSize:fontSize], NSForegroundColorAttributeName : titleColor}; NSDictionary *spacingDict = @{NSFontAttributeName : [UIFont systemFontOfSize:spacing]}; // 图片文本 NSTextAttachment *attachment = [[NSTextAttachment alloc] init]; attachment.image = image; attachment.bounds = CGRectMake(0, 0, imageWH, imageWH); NSAttributedString *imageText = [NSAttributedString attributedStringWithAttachment:attachment]; // 换行文本 NSAttributedString *lineText = [[NSAttributedString alloc] initWithString:@"\n\n" attributes:spacingDict]; // 按钮文字 NSAttributedString *text = [[NSAttributedString alloc] initWithString:title attributes:titleDict]; // 合并文字 NSMutableAttributedString *attM = [[NSMutableAttributedString alloc] initWithAttributedString:imageText]; [attM appendAttributedString:lineText]; [attM appendAttributedString:text]; return attM.copy;}@end
UIButton *btn = [[UIButton alloc]init]; // 创建图文混排规则(按钮-->图片&文字) NSAttributedString *attrStr = [NSAttributedString imageTextWithImage:[UIImage imageNamed:imageName] imageWH:40 title:title fontSize:14 titleColor:[UIColor whiteColor] spacing:8]; // 设置图文混排 [btn setAttributedTitle:attrStr forState:UIControlStateNormal]; // 设置自动换行 btn.titleLabel.numberOfLines = 0; // 设置文字居中 btn.titleLabel.textAlignment = NSTextAlignmentCenter;
转载地址:http://eykii.baihongyu.com/