計算Lable長度或高度的兩種方法

在iOS開發(fā)開發(fā)中可能需要計算Lable寬度(一行)和計算Lable高度(多行)的需求。其實本質(zhì)上就是計算字符串的寬度或高度。

1.計算單行Lable寬度:

調(diào)用方法:
//字符串對象調(diào)用
- (CGSize)sizeWithAttributes:(NSDictionary<NSString *,id> *)attrs;
參數(shù):

attrs:這個字典中主要傳入的參數(shù)是字體的大小。

范例:
//這個str可以認為是Lable.text
NSString * str = @"就讓秋風帶走我的思念帶走我的淚,我還一直等候再相約的地點";
CGSize strSize = [str sizeWithAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:17]}];
//通過計算出來的寬度來創(chuàng)建lable。
UILabel * lable = [[UILabel alloc]initWithFrame:CGRectMake(0, 5, strSize.width, strSize.height)];

2.計算多行Lable的高度(也能計算單行寬度):

這里有個前提:既然是計算高度,必須有一個固定的寬度。

調(diào)用方法:
//字符串對象調(diào)用
- (NSRect)boundingRectWithSize:(NSSize)size options:(NSStringDrawingOptions)options;
參數(shù):

size:這個size主要約束你的文本的寬或者高,如果想計算Lable高度,就要固定寬度,高度最好寫0。如果想計算Lable寬度,固定高度,寬度最好寫0。

options:這個參數(shù)可以根據(jù)計算要求做出選擇。
1.NSStringDrawingUsesLineFragmentOrigin:整個文本將以每行組成的矩形為單位計算整個文本的尺寸。

2.NSStringDrawingUsesFontLeading:計算行高時使用行間距。(行高=字體大小+行間距)

3.NSStringDrawingUsesDeviceMetrics:計算布局時使用圖元字形,而不是印刷字體。

4.NSStringDrawingTruncatesLastVisibleLine:如果文本內(nèi)容超出指定的矩形限制,文本將被截去并在最后一個字符后加上省略號。如果使用1選項,則該選項被忽略

范例:
NSString * str2 = @"就讓秋風帶走我的思念帶走我的淚,我還一直等候再相約的地點,就讓秋風帶走我的思念帶走我的淚,我還一直等候再相約的地點";

CGSize textSize = [str2 boundingRectWithSize:CGSizeMake(0, 320) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:12]} context:nil].size;
    
UILabel * lable2 = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, textSize.width, textSize.height)];
最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

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

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標簽默認的外補...
    _Yfling閱讀 14,110評論 1 92
  • HTML標簽解釋大全 一、HTML標記 標簽:!DOCTYPE 說明:指定了 HTML 文檔遵循的文檔類型定義(D...
    米塔塔閱讀 3,526評論 1 41
  • 2017.02.22 可以練習,每當這個時候,腦袋就犯困,我這腦袋真是神奇呀,一說讓你做事情,你就犯困,你可不要太...
    Carden閱讀 1,490評論 0 1
  • ¥開啟¥ 【iAPP實現(xiàn)進入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開一個線程,因...
    小菜c閱讀 7,317評論 0 17
  • 1 計算機體系 存儲器的層次結(jié)構(gòu)與高速緩存 當存儲器的層次結(jié)構(gòu)滿足以下條件時:a 容量遞增b 存取時間遞增c 訪問...
    1519f8ccc7b0閱讀 1,091評論 0 0

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