方法一:使用[self.label sizeToFit]方法,能够将lable的高度适应文字的高度。
例如:
self.label=[[UILabel alloc]initWithFrame:CGRectMake(60,100, kScreenWidth-120, 0)];
self.label.text=@"我是一个好人,非常好的人!";
self.label.textColor=[UIColor blackColor];
self.label.numberOfLines=0;
[self.label sizeToFit];
[self.view addSubview:self.label];
上一张效果图,看一下:
屏幕快照 2017-08-21 下午12.42.08.png如果你想让文字居中显示,那你一定会加上这样的一条语句,
self.label.textAlignment=NSTextAlignmentCenter;
那么我们再看一下效果,如下图所示:
![Uploading 屏幕快照 2017-08-21 下午12.45.45_759893.png . . .]
我们就会发现,文字并没有剧中,这是为啥呢?仔细想一想,label的高度是根据文字的高度来确定的,相当于一开始高度不确定,当然就不居中(这里的居中是左右上下都居中)。如果我们要实现label 中任意文字的居中,我们可以采用如下的方法:。
方法二:
使用分类重新写一个方法,代码如下:
- (CGSize)boundingRectWithSize:(CGSize)size
{
NSDictionary *attribute=@{NSFontAttributeName:self.font};
CGSize strSize=[self.text boundingRectWithSize:size options:NSStringDrawingTruncatesLastVisibleLine|NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading attributes:attribute context:nil].size;
return strSize;
}
该方法能够返回文字的Size,然后就可以做以下的内容,
self.label=[[UILabel alloc]init];
self.label.text=@"我是一个好人,非常好的人!我是一个好人,非常好的人!我是一个好人,非常好的人!我是一个好人,非常好的人!";
self.label.textColor=[UIColor blackColor];
self.label.numberOfLines=0;
CGSize strSize=[self.label boundingRectWithSize:CGSizeMake(kScreenWidth-120,0)];
self.label.frame=CGRectMake(60, 100, strSize.width, strSize.height);
self.label.textAlignment=NSTextAlignmentCenter;
[self.view addSubview:self.label];
效果如下:
屏幕快照 2017-08-21 下午2.07.03.png
网友评论