在大多屬性情況下,給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 ...