標籤:
我們在使用UILable時,在初始化的時候往往都是設定的固定的寬和高,在顯示不同長度的文本時達不到我們想要的視覺效果,或者是不能顯示完稍長的常值內容,滿足不了我們的需求,
我們可以根據文本的長度自動調節lable的高 或 寬
//初始化時設定的size可以隨便(此時的size會根據文本的多少自動調節)
_titleLable = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, WIDTH, 100)];
_titleLable.textAlignment = NSTextAlignmentCenter;
_titleLable.numberOfLines = 0;//此時行數必須設定(不設定行數當常值內容過多時,會只在lable的中央顯示一行內容其餘內容不會顯示);
UIFont * tfont = [UIFont systemFontOfSize:24];
_titleLable.font = tfont;
_titleLable.lineBreakMode =NSLineBreakByTruncatingTail ;
_titleLable.text = @"我們在使用UILable時,在初始化的時候往往都是設定的固定的寬和高,在顯示不同長度的文本時達不到我們想要的視覺效果,或者是不能顯示完稍長的常值內容,滿足不了我們的需求" ;
[_titleLable setBackgroundColor:[UIColor redColor]];
//高度估計文本大概要顯示幾行,寬度根據需求自己定義。 MAXFLOAT 可以算出具體要多高
CGSize titleSize =CGSizeMake(WIDTH,60);
// label可設定的最大高度和寬度
// CGSize size = CGSizeMake(300.f, MAXFLOAT);
// 擷取當前文本的屬性
NSDictionary * tdic = [NSDictionary dictionaryWithObjectsAndKeys:tfont,NSFontAttributeName,nil];
//ios7方法,擷取文本需要的size,限制寬度
CGSize actualTitleSize =[_message.newsName boundingRectWithSize:titleSize options:NSStringDrawingUsesLineFragmentOrigin attributes:tdic context:nil].size;
//此時設定的frame起到關鍵的作用 ,在此根據需要也可以用 actualTitleSize.width 自動調節lable的寬
_titleLable.frame =CGRectMake(10,10, 375 - 20, actualTitleSize.height);
[self.view addSubview:_titleLable];
這樣就能達到自動調節lable的高 或 寬 的目的了,如果你有更好
IOS ——UI篇—— 自適應UILable高度 或寬 的設定