前言
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都变为:。
扫描二维码关注公众号,回复:
11428380 查看本文章
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);