iOS开发-UILabel

前言

UILabel是一个用于显示只读文本的控件,是最常用的控件之一,也是iOS入门者最先使用的控件之一,因为使用起来非常简单,继承自UIView。

属性

先初始化控件再详解属性。

UILabel *label = [[UILabel alloc]init];
label.frame = CGRectMake(100, 100, 200, 20);
[self.view addSubview:label];

设置显示文本内容(默认为空)。

label.text = @"label";

设置富文本,富文本的相关详细内容这里不多做介绍。需要注意,富文本的优先级与text一致,显示后设置项。

label.attributedText = [[NSAttributedString alloc]initWithString:@"qwer" attributes:@{NSForegroundColorAttributeName:[UIColor blueColor], NSFontAttributeName:[UIFont systemFontOfSize:20]}];

设置文本颜色(默认为黑色)。

label.textColor = [UIColor blackColor];

设置字体,可以选择特殊字体和大小(默认为17号的系统字体)。

label.font = [UIFont systemFontOfSize:16];

设置文本的对齐方式(默认为居左对齐)。

label.textAlignment = NSTextAlignmentCenter;

设置文本行数,0为自适应行数(默认为1)。

label.numberOfLines = 0;

UILabel的交互默认是关闭的,所以给UILabel添加交互时需要先开启。这个比较容易忘记。

label.userInteractionEnabled = YES;

设置换行或分词模式,常用与计算高度时行数不正确的时候。

label.lineBreakMode = NSLineBreakByCharWrapping;

NSLineBreakByWordWrapping = 0, // 默认,文本边界换行分词以词组为单位分割,比如文本边界是“家人”,“家人”会一起换到下一行,而不是“家”和“人”分开在上下两行。
NSLineBreakByCharWrapping,     // 文本边界换行分词以字为单位分割,此时“家”和“人”就是分开在上下两行。
NSLineBreakByClipping,         // 简单裁剪,超过文本边界的文字直接不显示。
NSLineBreakByTruncatingHead,   // 文字超过文本边界,最后一行如此显示:"...wxyz"
NSLineBreakByTruncatingTail,   // 文字超过文本边界,最后一行如此显示:"abcd..."
NSLineBreakByTruncatingMiddle  // 文字超过文本边界,最后一行如此显示:"ab...yz"

设置绘制方式,默认为yes开启,关闭后,无论是富文本还是text都变为:

label.enabled = NO;

设置文本内容的阴影颜色和偏移量,默认没有阴影。

label.shadowColor = [UIColor blueColor];
label.shadowOffset = CGSizeMake(0, -1);

width控制左右偏移,-1是向左偏移1pt,
height控制上下偏移,-1是向上偏移1pt。

设置文本高亮状态以及高亮状态文本颜色 。

label.highlighted = YES;
label.highlightedTextColor = [UIColor redColor];

根据label的宽度调整font的大小。 

label.adjustsFontSizeToFitWidth = YES;

自适应高

自适应高就一定要指定宽。

//指定frame,一定要指定宽,高则无所谓。
label.frame = CGRectMake(100, 100, 200, 100);
label.text = @"labellabellabellabel";
//自适应行数才能自适应高
label.numberOfLines = 0;
//调用sizeToFit,就会根据宽调节高
[label sizeToFit];

还要一个比较麻烦的方法:

//计算高度,再赋值frame
CGSize sizeToFit = [label.text boundingRectWithSize:CGSizeMake(200, MAXFLOAT)
                                                options:NSStringDrawingUsesLineFragmentOrigin
                                             attributes:@{NSFontAttributeName:label.font}
                                                context:nil].size;
label.frame = CGRectMake(100, 100, 200, 100);

猜你喜欢

转载自blog.csdn.net/qq_36557133/article/details/101881043