UILabel 是一个专门用来显示文本的控件,在我们的开发当中也是经常被用到。
下面我们一起来学习UILabel吧!!!
基本属性
对象创建以及文本的显示
<pre>
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(50, 50, 200, 30)];
[self.view addSubview:label];
//设置要显示的文本
label.text = @"I love tanyufeng, tanyufeng love me, we are family!!!";
</pre>
其他属性
设置文字的颜色
label.textColor = [UIColor redColor];
设置文本显示的行数
label.numberOfLines = 2;
当希望只显示指定行时,我们可以设置这个属性;设置行数后,这个label最多就只能显示我们设置的行数。如果不设置那么他默认值为0,也就是可以显示多行,随文本的多少类确定。
设置文本的换行模式
当多行显示时,我们就会碰到换行的情况,不同的换行模式会有不同的效果,设置代码如下:
label.lineBreakMode = NSLineBreakByTruncatingMiddle;
lineBreakMode
是一个枚举类型,默认为 NSLineBreakByTruncatingTail
, 有如下枚举成员
- //以单词为单位换行,以单位为单位截断
NSLineBreakByWordWrapping
- //以字符为单位换行,以字符为单位截断
NSLineBreakByCharWrapping
- //以单词为单位换行。以字符为单位截断
NSLineBreakByClipping
- 以单词为单位换行。如果是单行,则开始部分有省略号。
如果是多行,则中间有省略号,省略号后面有4个字符
NSLineBreakByTruncatingHead
- 以单词为单位换行。无论是单行还是多行,都是末尾有省略号。
NSLineBreakByTruncatingTail
- 以单词为单位换行。无论是单行还是多行,都是中间有省略号,省略号后面只有2个字符
NSLineBreakByTruncatingMiddle
设置文本的对齐方式
label.textAlignment = NSTextAlignmentRight;
textAlignment
是一个枚举类型,默认为NSTextAlignmentLeft
,枚举成员如下:
- 左对齐
NSTextAlignmentLeft
- 右对齐
NSTextAlignmentRight
- 居中对齐
NSTextAlignmentCenter
- 最后一行自然对齐
NSTextAlignmentJustified
- 默认对齐脚本
NSTextAlignmentNatural
设置文本的字体
设置系统默认字体,且字体的大小为20
label.font = [UIFont systemFontOfSize:20];
具体的设置大家可以去看看如何创建一个UIFont对象,将创建的UIFont对象赋值给font属性就可以设置label的字体
设置文本的颜色
label.textColor = [UIColor redColor];
设置控件是否被激活
label.enabled = NO;
设置为NO
时文本变暗,表示控件未被激活,文本颜色无效
设置为YES
时文本正常,表示控件被激活,文本颜色照常,为默认
设置文本的阴影
设置文本的阴影颜色 label.shadowColor = [UIColor grayColor];
设置文本的阴影位置 label.shadowOffset = CGSizeMake(15, 15);
设置阴影位置时需要设置width和height,他们的意义如下:
- height代表阴影上(负数)下(正数)偏移的位置
- width代表阴影左(负数)右(整数)偏移的位置
扩展功能
根据控件大小自动调节文本大小
label.adjustsFontSizeToFitWidth = YES;
计算文本高度
计算文本高度的前提条件肯定是固定宽度后的,所以在求高度之前我们需要设置宽高
CGRect bounds = CGRectMake(0, 0, 200, 300);
//计算20行后的Label的Frame
heightLabel = [myLabel textRectForBounds:bounds
limitedToNumberOfLines:20];
NSLog(@"%f",heightLabel.size.height);
控件根据文本自适应高度
UILabel *msgLabel = [[UILabel alloc]
initWithFrame:CGRectMake(15, 45, 0, 0)];
msgLabel.backgroundColor = [UIColor lightTextColor];
[msgLabel setNumberOfLines:0];
CGSize size = CGSizeMake(290, 1000);
msgLabel.text = @"获取到的deviceToken,我们可以通过webservice服务提交给.net应用程序,这里我简单处理,直接打印出来,拷贝到.net应用环境中使用。";
CGSize msgSie = [msgLabel.text boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:msgLabel.font} context:nil].size;
[msgLabel setFrame:CGRectMake(15, 45, 290, msgSie.height)];
欢迎大家踊跃评论,让我们一起探讨技术!!
如果觉得文章不错,请帮忙点击文章下方的喜欢
!!
你的支持将是对我最好的鼓励, 谢谢!!!