我们经常会遇到将Label中文字置顶,也就是将文字顶到Lable框的最顶端显示的需求,UILabel是无法对内容文字进行置顶处理的,所以,如果我们不对Label加以额外的设置,就会出现如下情况:
置顶前解决办法:我们可以通过sizeToFit
方法解决它:
- (void)viewDidLoad {
[super viewDidLoad];
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake((self.view.bounds.size.width - 200)/2, 100, 200, 150)];
label.backgroundColor = [UIColor yellowColor];
NSString *labelText = @"我不知道如何置顶,谁来告诉我?";
[label setText:labelText];
[label setNumberOfLines:0];
//让内容置顶
[label sizeToFit];
[self.view addSubview:label];
}
效果图:
置顶后但是有些小伙伴会对内容置顶后的Label的frame
有些顾虑,笔者也有,所以就在Label后方放置了一个和初始Label具有相同frame
的红色背景,那么如果设置sizeToFit
方法后,即使Label的frame
有变化,我们也可以通过和红色背景的frame
相对比而看出:
我们可以看到,文字内容置顶后,原Label的
origin
几乎没有变化,而bounds
适应了文字,大小改变了。
所以不难看出,通过sizeToFit
方法,我们可以将Label的大小“刚好”紧贴文字外部,从而实现了置顶的效果。
网友评论