iOS label代碼自適應(yīng)高度寬度

第一種:

UILabel *label = [[UILabel alloc] init];

label.backgroundColor = [UIColor colorWithRed:0.1 green:0.1 blue:0.1 alpha:1];

label.text = @"大師傅好搜啊發(fā)";

label.numberOfLines = 0;

CGSize size = CGSizeMake(100, MAXFLOAT);//設(shè)置高度寬度的最大限度 CGRect rect = [label.text boundingRectWithSize:size options:NSStringDrawingUsesFontLeading|NSStringDrawingTruncatesLastVisibleLine|NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:20]} context:nil];

label.frame = CGRectMake(100, 100, rect.size.width, rect.size.height); self.view addSubview:label];
其實(shí)就是使用- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(nullable NSDictionary*)attributes context:(nullable NSStringDrawingContext *)context 這個(gè)方法

參數(shù):

size:寬高限制,用于計(jì)算文本繪制時(shí)占據(jù)的矩形塊。

options: 文本繪制時(shí)的附加選項(xiàng)

NSStringDrawingUsesLineFragmentOrigin//整個(gè)文本將以每行組成的矩形為單位計(jì)算整個(gè)文本的尺寸

NSStringDrawingUsesFontLeading//以字體間的行距

NSStringDrawingUsesDeviceMetrics //計(jì)算文本尺寸時(shí)將以每個(gè)字或字形為單位來(lái)計(jì)算。

NSStringDrawingTruncatesLastVisibleLine//計(jì)算文本尺寸時(shí)將以每個(gè)字或字形為單位來(lái)計(jì)算。

可以組合試一下達(dá)到自己想要的效果

attributes:對(duì)字體、顏色、行距、字間隔等等一些設(shè)置,使用字典來(lái)做一些屬性設(shè)置

context:上下文,該參數(shù)可為 nil 。

第二種:

UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(100, 100, 100, 0)];

label.backgroundColor = [UIColor colorWithRed:0.1 green:0.1 blue:0.1 alpha:1];

label.text = @"我會(huì)自己去適應(yīng)";

label.numberOfLines = 0;

[label sizeToFit];

[self.view addSubview:label];
其實(shí)就是使用 [label sizeToFit];讓label自己去適應(yīng)

或者使用sizeThatFits:方法自己定義寬高

CGSize size = [label sizeThatFits:CGSizeMake(100, MAXFLOAT)];

label.frame = CGRectMake(100, 100, size.width, size.height);

第三種:

UILabel *label = [[UILabel alloc] init];

label.backgroundColor = [UIColor colorWithRed:0.1 green:0.1 blue:0.1 alpha:1];

label.text = @"我會(huì)自己去適應(yīng)寬度的";

label.font = [UIFont systemFontOfSize:50];

CGSize size = [label.text sizeWithAttributes:@{NSFontAttributeName: [UIFont systemFontOfSize:50]}];

//ceilf()向上取整函數(shù), 只要大于1就取整數(shù)2. floor()向下取整函數(shù), 只要小于2就取整數(shù)1.

CGSize adaptionSize = CGSizeMake(ceilf(size.width), ceilf(size.height));

label.frame = CGRectMake(100, 100, adaptionSize.width, adaptionSize.height);

[self.view addSubview:label];
這種方法只能適應(yīng)一行的寬高,高度也是根據(jù)字體的大小來(lái)變化的

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容