根據字型多少使UILabel自動調節尺寸

2022-03-23 13:28:07 字數 1879 閱讀 2929

在大多屬性情況下,給uilabel進行動態資料繫結的時候,往往需要根據字串的多少,動態調整uilabel的寬度或高度。

下面分兩種情況考慮:

1、uilabel寬度不變,根據字型多少,自動調整uilabel的高度,並折行顯示。

**如下:

[cpp]view plain

copy

uilabel *label = [[uilabel alloc] initwithframe:cgrectmake(0, 10, 200, 20)];  

label.font = [uifont boldsystemfontofsize:20.0f];  //uilabel的字型大小

label.numberoflines = 0;  //必須定義這個屬性,否則uilabel不會換行

label.textcolor = [uicolor whitecolor];   

label.textalignment = nstextalignmentleft;  //文字對齊方式

[label setbackgroundcolor:[uicolor redcolor]];  

//寬度不變,根據字的多少計算label的高度

nsstring *str = @"可以更改此內容進行測試,寬度不變,高度根據內容自動調節"

;  //根據計算結果重新設定uilabel的尺寸

[label setframe:cgrectmake(0, 10, 200, size.height)];  

label.text = str;  

[self.view addsubview:label];  

[label release];  

2、uilabel高度不變,根據字型多少,自動調整uilabel的寬度,並折行顯示

**如下:

[cpp]view plain

copy

uilabel *label = [[uilabel alloc] initwithframe:cgrectmake(0, 10, 20, 20)];  

label.font = [uifont boldsystemfontofsize:20.0f];  //uilabel的字型大小

label.numberoflines = 0;  //必須定義這個屬性,否則uilabel不會換行

label.textcolor = [uicolor whitecolor];   

label.textalignment = nstextalignmentleft;  //文字對齊方式

[label setbackgroundcolor:[uicolor redcolor]];  

//高度固定不折行,根據字的多少計算label的寬度

nsstring *str = @"高度不變獲取寬度,獲取字串不折行單行顯示時所需要的長度"

;  cgsize size = [str sizewithfont:label.font constrainedtosize:cgsizemake(maxfloat, label.frame.size.height)];  

nslog(@"size.width=%f, size.height=%f"

, size.width, size.height);  

//根據計算結果重新設定uilabel的尺寸

[label setframe:cgrectmake(0, 10, size.width, 20)];  

label.text = str;  

[self.view addsubview:label];  

[label release];  

其中兩種情況,核心**均為size處的**,均要把對應的size設定為maxfloat

根據字型多少使UILabel自動調節尺寸

在大多屬性情況下,給uilabel進行動態資料繫結的時候,往往需要根據字串的多少,動態調整uilabel的寬度或高度。下面分兩種情況考慮 1 uilabel寬度不變,根據字型多少,自動調整uilabel的高度,並折行顯示。如下 cpp view plain copy uilabel label ui...

iOS開發 UILabel根據內容自動調整高度

寫法一 物件方法,傳入 字型 最大尺寸.即可得到寬高,最大尺寸主要限制寬度,如果是一行就給個 如果是多行就限制x值,y值隨便給 cgsize sizewithfont uifont font maxsize cgsize maxsize return self boundingrectwithsiz...

MFC如何使控制項大小隨著對話方塊大小自動調整

假設對話方塊類為cmydlg類,那麼首先設定乙個變數 crect m rect 用於儲存原對話方塊大小 那麼在對話方塊建立的時候先獲得對話方塊的大小 bool cmydlg oninitdialog 然後再手動新增乙個函式,用以實現具體的變化 void cmydlg changesize uint ...