iOS开发 UILabel 详细介绍(属性+富文本)

UILabel是iOS开发中最常用的一种标签了,在开发过程中,会用到各种个样的标签属性,一段文字中变颜色或者字体的样式等(这些都是富文本中的内容,用于美化文字),下面就让我来给大家做一个详细的UILabel介绍吧!

一、UILabel的创建与初始化

1、UILabel的创建

用这种方式创建一个UILabel
@property (nonatomic, strong) UILabel *label;

2、UILabel的初始化方式

(1)设置位置和宽高的初始化方式
self.label = [[UILabel alloc] initWithFrame:CGRectMake(50, 100, self.view.bounds.size.width-100, self.view.bounds.size.height- 200)];///第一种初始化方式


(2)普通的初始化方式
self.label = [UILabel alloc] init];///第二种初始化方式

二、UILabel的属性

1、text

text ---- 标签的显示内容,默认为空
self.label.text = @"我去。。。。这么短的么????还是不够长,文字到底要多长啊!!!!!!!!!!!!!!!~~~~~~~~~~";


2、textColor

textColor ---- 标签的文字颜色,默认为文本黑色
self.label.textColor = [UIColor whiteColor];

3、font

font ---- 标签的文字大小设置,默认使用系统的17
self.label.font = [UIFont systemFontOfSize:25];

4、backgroundColor

backgroundColor ---- 标签的背景颜色
self.label.backgroundColor = [UIColor blackColor]

5、numberOfLines

numberOfLines ---- 标签的最多显示行数,如果为0,则表示会自动换行
self.label.numberOfLines = 0;

6、textAlignment

textAlignment ---- 标签中内容的对齐方式 常用的有三种:左对齐,居中,右对齐。默认为左对齐
self.label.textAlignment = NSTextAlignmentCenter;

7、enabled

enabled ---- 标签是否可用,默认是YES,只是决定了Label的绘制方式,将它设置为NO将会使文本变暗,表示它没有激活,这时向它设置颜色值是无效的。
self.label.enabled = YES;

8、highlighted

highlighted ---- 标签是否高亮显示 - 默认为NO
self.label.highlighted = NO;

9、highlightedTextColor

highlightedTextColor ---- 标签高亮显示时的文本颜色
self.label.highlightedTextColor = [UIColor orangeColor];

10、lineBreakMode

lineBreakMode ---- 设置标签文字过长时的显示格式,默认是最后截断尾巴,用…代替 有多种样式(这里就先不详细介绍了!可以自己一个一个去尝试看看是怎么样的)
self.label.lineBreakMode = NSLineBreakByTruncatingTail;

11、shadowColor

shadowColor ---- 标签阴影,默认没有
self.label.shadowColor = [UIColor orangeColor];

12、shadowOffset

shadowOffset ---- 标签阴影的偏移
self.label.shadowOffset = CGSizeMake(0, 1.5);

13、baselineAdjustment

baselineAdjustment ---- 如果adjustsFontSizeToFitWidth属性设置为YES,这个属性就来控制文本基线的行为
self.label.baselineAdjustment = UIBaselineAdjustmentNone;

14、adjustsFontSizeToFitWidth

adjustsFontSizeToFitWidth ---- 默认NO,如果文本的长度超出了label的宽度,则缩小文本的字体大小来让文本完全显示
self.label.adjustsFontSizeToFitWidth = NO;

15、userInteractionEnabled

userInteractionEnabled ---- 是否响应用户事件
self.label.userInteractionEnabled = YES;

16、minimumScaleFactor

minimumScaleFactor ---- 设置字体可缩小的最小比例 (值在 0~1.0之间 默认为0.0)常与adjustsFontSizeToFitWidth一起使用来控制缩小的最小比例
self.label.minimumScaleFactor = 0.5;

17、allowsDefaultTighteningForTruncation

allowsDefaultTighteningForTruncation ---- label截断是否紧缩文字,默认为NO
self.label.allowsDefaultTighteningForTruncation = NO;

18、preferredMaxLayoutWidth

preferredMaxLayoutWidth ---- 支持基于约束的布局(自动布局),如果非零,则在确定多行标签的-intrinsicContentSize时使用,设置preferredLayoutWidth后需要重新计算并布局界面
self.label.preferredMaxLayoutWidth = 80;

19、enablesMarqueeWhenAncestorFocused

enablesMarqueeWhenAncestorFocused ---- 如果此值为true,则标签将忽略lineBreakMode、adjustsFontSizeToFitWidth和allowsDefaultTightengForTruncation。当视图层次结构中的任何祖先有焦点时,标签滚动其文本。默认为false
self.label.enablesMarqueeWhenAncestorFocused = YES;

20、minimumFontSize

minimumFontSize ---- 字体自动缩小的最小字体大小 (已经弃用)被minimumScaleFactor代替
self.label.minimumFontSize = 14; 

21、adjustsLetterSpacingToFitWidth

adjustsLetterSpacingToFitWidth ---- 改变字母之间的间距来适应Label大小(已经弃用)
self.label.adjustsLetterSpacingToFitWidth = YES;

22、attributedText (划重点!)

attributedText ---- 添加富文本(富文本内容是label中的重点了,开发时很多时候都会用到)
self.label.attributedText = string;//string为NSMutableAttributedString类型

三、富文本的介绍和使用

富文本就是纯文本内容经过更高级的渲染,更改而成的文本(例如 一段文字中的某个字/某段字的颜色大小不一样,又或者有一些特殊字体例如 空心体等)一起来玩玩吧,富文本比较有意思

1、初始化

后面使用的内容应该为你想要那段文字产生变化的内容,就拿上面的label的文本举例
NSMutableAttributedString *string = [[NSMutableAttributedString alloc] initWithString:self.label.text];

2、如何添加需要改变的类型

(1)addAttribute: value: range:
  • 参数一:想改变为什么样的类型,例如下划线,字体大小,字体颜色等
  • 参数二:值,例如颜色的话直接用[UIColor blackColor];或者别的颜色就可以
  • 参数三:想要修改的文字范围NSMakeRange(loc,length), loc是开始的位置,length是需要修改的文字长度
(2)addAttributes: range:
  • 参数一:用字典的方式存储修改方式 例如 @{想改的类型:值,想修改的类型:值}
  • 参数二 想要修改的文字范围NSMakeRange(loc,length) loc是开始的位置,length是需要修改的文字长度

3、来介绍一些简单又有趣的富文本吧

(1)设置部分字体大小(前两个字)大小为20

[string addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:20.0f]  range:NSMakeRange(0, 2)];
 

(2)设置部分字体颜色 (第三个字开始的后三个字 ) 设为 红色

[string addAttribute:NSForegroundColorAttributeName value:[UIColor redColor] range:NSMakeRange(2, 3)]; 

(3)设置部分位置的背景颜色(第五个位置开始的后两个字)设为背景颜色 黄色

[string addAttribute:NSBackgroundColorAttributeName value:[UIColor yellowColor] range:NSMakeRange(5, 2)]; 

(4)给部分文字添加下划线 (第九个文字开始的后三个字)设置下划线

[string addAttribute:NSUnderlineStyleAttributeName value:[NSNumber numberWithInteger:NSUnderlineStyleSingle]  range:NSMakeRange(9, 3)]; 

(5)添加中间删除线 (第11个开始的后一个字)设置中间删除线

[string addAttribute:NSStrikethroughStyleAttributeName value:@(NSUnderlinePatternSolid | NSUnderlineStyleSingle) range:NSMakeRange(11, 4)]; 

(6)添加字体的类型 (第十五个开始的后七个字)设置字体的类型(黑体,宋体这样的)

[string addAttribute:NSFontAttributeName value:[UIFont fontWithName:@"Verdana-BoldItalic" size:13]  range:NSMakeRange(15, 7)]; 

(7)空心字,文字边框描述文字内部为空 (从第二十五开始的后三个字)设为空心字 空心字宽2 边的颜色为灰色

[string addAttribute:NSStrokeWidthAttributeName
value:@2 range:NSMakeRange(25, 3)];
[string addAttribute:NSStrokeColorAttributeName
value:[UIColor grayColor]
range:NSMakeRange(25, 3)];

(8)设置阴影 (第三十个开始的后三个)

NSShadow *shadow = [[NSShadow alloc]init];
shadow.shadowBlurRadius = 5;//模糊度
shadow.shadowColor = [UIColor yellowColor];
shadow.shadowOffset = CGSizeMake(1, 3);
NSDictionary *attrsDic2 = @{NSShadowAttributeName: shadow,
NSVerticalGlyphFormAttributeName: @(0),
NSForegroundColorAttributeName: [UIColor magentaColor]};
[string addAttributes:attrsDic2 range:NSMakeRange(30, 3)];

(9)设置文本扁平化(第三十三位置开始的后四个)

NSShadow *shadow01 = [[NSShadow alloc]init];
shadow01.shadowBlurRadius = 5;//模糊度
shadow01.shadowColor = [UIColor magentaColor];
shadow01.shadowOffset = CGSizeMake(1, 3);
[string addAttributes:@{NSShadowAttributeName: shadow01,NSVerticalGlyphFormAttributeName: @(0),
NSExpansionAttributeName: @1} range:NSMakeRange(33, 4)];

(10)设置字体的倾斜度(第三十七位置开始的后三个)

NSShadow *shadow02 = [[NSShadow alloc]init];    shadow02.shadowBlurRadius = 5;//模糊度
shadow02.shadowColor = [UIColor blueColor];
shadow02.shadowOffset = CGSizeMake(1, 3);
[string addAttributes:@{NSShadowAttributeName: shadow02,
NSVerticalGlyphFormAttributeName: @(0),
NSObliquenessAttributeName: @1} range:NSMakeRange(37, 3)];

(11)设置段落样式

//段落格式
NSMutableParagraphStyle *paragraph = [[NSMutableParagraphStyle alloc] init];
paragraph.lineSpacing = 2;//行间距
paragraph.headIndent = 10;//头部缩进,相当于左padding
paragraph.tailIndent = -10;//相当于右padding
paragraph.lineHeightMultiple = 1.5;//行间距是多少倍
paragraph.firstLineHeadIndent = 5;//指定段落开始的缩进,首行头缩进
paragraph.headIndent = 10;//调整全部文字的缩进
paragraph.paragraphSpacingBefore = 20;//段落之前的间距
paragraph.paragraphSpacing = 20;//段落后面的间距
paragraph.alignment = NSTextAlignmentLeft;//对齐方式
/// 添加段落设置
[string addAttribute:NSParagraphStyleAttributeName
value:paragraph range:NSMakeRange(0, string.length)];

(12)label添加超链接(全文超链接)会使整个出现一个下划线且字体变蓝,为了展示上边的富文本,这里就将超链接注释了

NSURL *url = [NSURL URLWithString:@"www.baidu.com"];
[string addAttribute:NSLinkAttributeName
value:url range:NSMakeRange(0, string.length)];

(13)运行结果(嗯~~虽然丑了点,但是效果都有的,可以根据自己的要求去规划)

iOS开发 UILabel 详细介绍(属性+富文本)_第1张图片

四、UILabel小结

UILabel中虽然是我们用的最多,也是觉得的最简单的一个标签,但是当你仔细的去整理的时候,你会发现,label中有许多你不知道的东西。就像富文本一样,以前完全没有想过空心字是这样字设置出来的。UILabel在文本中真的非常大,特别是富文本,这也让你增加了很多的学习乐趣,好好玩玩富文本,是个好东西哦~

UILabel的介绍到这里也就结束喽!属性基本上都已经写全了,富文本这一块,有太多好玩的东西了,还没有写全,可以自己慢慢探索~

谢谢大家观看~如有错误,请帮忙指出!谢谢!!

你可能感兴趣的:(iOS类,UILabel,富文本,ios)