一般用富文本实现多种花样的Label文字,下图是利用UILabel分类快速创建的多彩多样lable文字,快速简单,自定义性强,更重要的是无代码污染,特别适合轻量级使用
https://github.com/joaoffcosta/UILabel-FormattedText
在我写这篇博客的第二天,作者就把代码全部改成swift了....
主要功能介绍:
在同一lablel中设置不同文字字体,文字颜色,下划线,删除线,字间距,斜体,图片
在类别中新加几个个方法,这样更加强大,方便使用,其它方法调用详见Demo
// UILabel+FormattedText.h
#pragma mark--自定义添加
/*设置字体于颜色*/
- (void) setFont:(UIFont *)font substring:(NSString*)substring;
- (void) setFont:(UIFont *)font WithtColor:(UIColor *)textColor substring:(NSString*)substring;
/**添加删除线 */
-(void)setTextDeleteLine:(UIColor *)lineColor range:(NSRange)range;
/**斜体*/
-(void)setObliqueness:(id)obliqueness range:(NSRange)range;
/** 字间距 */
-(void)setWordSpace:(id)space range:(NSRange)range;
/** 添加多个属性*/
-(void)setTextAttributes:(NSDictionary *)attributes range:(NSRange)range;
/*添加图片*/
-(void)addImgAttachment:(UIImage *)image size:(CGSize)size range:(NSRange)range;
// UILabel+FormattedText.m
#pragma mark -Custom Add By Copyright (c) SIBU.Net----
- (void) setFont:(UIFont*)font substring:(NSString*)substring {
NSRange range = [self.text rangeOfString:substring];
if (range.location != NSNotFound)
{
[self setFont:font range:range];
}
}
- (void) setFont:(UIFont *)font WithtColor:(UIColor *)textColor substring:(NSString*)substring
{
NSRange range = [self.text rangeOfString:substring];
if (range.location != NSNotFound)
{
[self setFont:font range:range];
[self setTextColor:textColor range:range];
}
}
/**添加删除线 */
-(void)setTextDeleteLine:(UIColor *)lineColor range:(NSRange)range
{
NSMutableAttributedString *text = [self.attributedText mutableCopy];
[text addAttribute:NSStrikethroughStyleAttributeName
value:@(YES)
range:range];
[text addAttribute:NSUnderlineColorAttributeName value:lineColor range:range];
self.attributedText = text;
}
/**
* 斜体,设置字体倾斜度--@0.0~@1.0
*/
-(void)setObliqueness:(id)obliqueness range:(NSRange)range{
NSMutableAttributedString *text = [self.attributedText mutableCopy];
[text addAttribute:NSObliquenessAttributeName value:obliqueness range:range];
self.attributedText = text;
}
/** 字间距 */
-(void)setWordSpace:(id)space range:(NSRange)range;
{
NSMutableAttributedString *text = [self.attributedText mutableCopy];
[text addAttribute:NSKernAttributeName value:space range:range];
self.attributedText = text;
}
/** 设置多个属性*/
-(void)setTextAttributes:(NSDictionary *)attributes range:(NSRange)range
{
NSMutableAttributedString *text = [self.attributedText mutableCopy];
[text addAttributes:attributes range:range];
self.attributedText = text;
}
/*添加图片*/
-(void)addImgAttachment:(UIImage *)image size:(CGSize)size range:(NSRange)range
{
NSMutableAttributedString *text = [self.attributedText mutableCopy];
NSTextAttachment *textAttachment = [[NSTextAttachment alloc] init];
textAttachment.image = [self imageWithImage:image scaleToSize:size];
NSAttributedString *iconAttributedString = [NSAttributedString attributedStringWithAttachment:textAttachment];
[text replaceCharactersInRange:range withAttributedString:iconAttributedString];
self.attributedText = text;
}
使用
- (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view, typically from a nib. self.view.backgroundColor=[UIColor blackColor]; NSString *text=@"思埠集团于2015年1月6日正式入股本土第一家在新三板上市日化企业——幸美股份(代码830929),成为幸美最大股东。广东思埠集团直接控股新三板挂牌上市公司幸美股份,正式成为准上市公司。"; UILabel *labelA = [[UILabel alloc] init]; [labelA setFrame:CGRectMake(0, 15, self.view.frame.size.width,25)]; [labelA setBackgroundColor:[UIColor clearColor]]; [labelA setTextAlignment:NSTextAlignmentCenter]; [labelA setText:@"Color Label"]; [labelA setTextColor:[UIColor cyanColor]]; [labelA setFont:[UIFont systemFontOfSize:22]];; [labelA setTextColor:[UIColor redColor] String:@"Color"]; [self.view addSubview:labelA]; // Colors UILabel *labelC = [[UILabel alloc] init]; [labelC setFrame:CGRectMake(0, 30, self.view.frame.size.width, floorf(self.view.frame.size.height / 5))]; [labelC setBackgroundColor:[UIColor clearColor]]; [labelC setTextAlignment:NSTextAlignmentCenter]; [labelC setText:text]; [labelC setNumberOfLines:2]; [labelC setTextColor:[UIColor yellowColor]]; [labelC setFont:[UIFont fontWithName:@"Courier" size:14]]; [labelC setTextColor:[UIColor whiteColor] range:NSMakeRange(20, 3)]; [labelC setTextColor:[UIColor cyanColor] range:NSMakeRange(28, 4)]; [labelC setTextUnderLine:[UIColor redColor] range:NSMakeRange(10, 6)]; [self.view addSubview:labelC]; // Fonts UILabel *labelF = [[UILabel alloc] init]; [labelF setFrame:CGRectMake(0, floorf(self.view.frame.size.height / 4), self.view.frame.size.width, floorf(self.view.frame.size.height / 3))]; [labelF setBackgroundColor:[UIColor clearColor]]; [labelF setTextAlignment:NSTextAlignmentCenter]; [labelF setText:text]; [labelF setNumberOfLines:2]; [labelF setTextColor:[UIColor yellowColor]]; [labelF setFont:[UIFont fontWithName:@"Courier" size:14]]; [labelF setTextColor:[UIColor redColor] String:@"幸美股份"]; [labelF setFont:[UIFont systemFontOfSize:20] WithtColor:[UIColor whiteColor] substring:@"思埠集团"]; [self.view addSubview:labelF]; // Colors AND Fonts UILabel *labelCF = [[UILabel alloc] init]; [labelCF setFrame:CGRectMake(0, floorf(self.view.frame.size.height * 2 / 4), self.view.frame.size.width, floorf(self.view.frame.size.height / 3))]; [labelCF setBackgroundColor:[UIColor clearColor]]; [labelCF setTextAlignment:NSTextAlignmentCenter]; [labelCF setText:text]; [labelCF setNumberOfLines:2]; [labelCF setTextColor:[UIColor yellowColor]]; [labelCF setFont:[UIFont fontWithName:@"Courier" size:14]]; [labelCF setTextColor:[UIColor redColor] range:NSMakeRange(20, 8)]; [labelCF setFont:[UIFont fontWithName:@"Courier-Bold" size:14] range:NSMakeRange(20, 8)]; [labelCF setTextColor:[UIColor cyanColor] range:NSMakeRange(33, 11)]; [labelCF setFont:[UIFont fontWithName:@"Courier-Oblique" size:14] range:NSMakeRange(33, 11)]; [self.view addSubview:labelCF]; }
Demo:http://files.cnblogs.com/files/sixindev/UILabelFormattedText.zip
附录:
//常见的属性及说明
NSFontAttributeName 设置字体属性,默认值:字体:Helvetica(Neue) 字号:12
NSForegroundColorAttributeNam 设置字体颜色,取值为 UIColor对象,默认值为黑色
NSBackgroundColorAttributeName 设置字体所在区域背景颜色,取值为 UIColor对象,默认值为nil, 透明色
NSLigatureAttributeName 设置连体属性,取值为NSNumber 对象(整数),0 表示没有连体字符,1 表示使用默认的连体字符
NSKernAttributeName 设定字符间距,取值为 NSNumber 对象(整数),正值间距加宽,负值间距变窄
NSStrikethroughStyleAttributeName 设置删除线,取值为 NSNumber 对象(整数)
NSStrikethroughColorAttributeName 设置删除线颜色,取值为 UIColor 对象,默认值为黑色
NSUnderlineStyleAttributeName 设置下划线,取值为 NSNumber 对象(整数),枚举常量 NSUnderlineStyle中的值,与删除线类似
NSUnderlineColorAttributeName 设置下划线颜色,取值为 UIColor 对象,默认值为黑色
NSStrokeWidthAttributeName 设置笔画宽度,取值为 NSNumber 对象(整数),负值填充效果,正值中空效果
NSStrokeColorAttributeName 填充部分颜色,不是字体颜色,取值为 UIColor 对象
NSShadowAttributeName 设置阴影属性,取值为 NSShadow 对象
NSTextEffectAttributeName 设置文本特殊效果,取值为 NSString 对象,目前只有图版印刷效果可用:
NSBaselineOffsetAttributeName 设置基线偏移值,取值为 NSNumber (float),正值上偏,负值下偏
NSObliquenessAttributeName 设置字形倾斜度,取值为 NSNumber (float),正值右倾,负值左倾
NSExpansionAttributeName 设置文本横向拉伸属性,取值为 NSNumber (float),正值横向拉伸文本,负值横向压缩文本
NSWritingDirectionAttributeName 设置文字书写方向,从左向右书写或者从右向左书写
NSVerticalGlyphFormAttributeName 设置文字排版方向,取值为 NSNumber 对象(整数),0 表示横排文本,1 表示竖排文本
NSLinkAttributeName 设置链接属性,点击后调用浏览器打开指定URL地址
NSAttachmentAttributeName 设置文本附件,取值为NSTextAttachment对象,常用于文字图片混排
NSParagraphStyleAttributeName 设置文本段落排版格式,取值为 NSParagraphStyle 对象
扩展阅读
FastTextView--iOS上最好的开源富文本编辑器。
http://itfish.net/article/37083.html
http://joeytat.com/post/ios/7.-shi-yong-%60nsattributedstring%60-shi-xian-tu-wen-hun-pai