得到UILable在設置字體樣式后的真實長度

reyzhang 13年前發布 | 31K 次閱讀 IOS UILabel iOS開發 移動開發 SizeWithFont

在用代碼創建UI時,首先就是要創建UIframe,一般的控件在創建時都會調用如下函數:</span>initWithFrame:(CGRect)frame.在取frame的時候有幾種情況,一是你已知當前控件在父視圖中的絕對位置,你可以直接輸入坐標位置及大小就可以創建了。還有一種就是在已知控件的基礎上做參考,來計算自己的坐標位置。我在工作中就遇到了一個這樣問題:</span>我有一個cellcell上顯示了標題(標題是顯示是用的UILabel,我想根據需求在標題后添加一個標識圖片。這個圖片的位置不確定就需要我們計算出來。我使用的就是第二種方法,以已知的標題坐標來得到標識圖片的坐標。得到標題的坐標很簡單,可以用</span>cell.titleLabel.frame來得到標題的坐標位置。那么要在標題后顯示標識圖片,還需要知道titleLabel的寬度。這樣titleLabel 的初始坐標+titleLabel的寬度,就是在titleLabel的尾部坐標,在這個位置就是標識圖片的坐標了。現在的問題是如何取titleLabel的寬度呢?由于我們可以對UILabel設置字體大小加粗等行為,使得UILabel的寬度并非是文字的長度。這就需要我們另想辦法。還好,ios 已經我們想到了這點,我們可以調用一個函數來得到UILabel在設置字體大小加粗后的真實寬度:
</span>CGSize labelSize=[cell.titleLabel.text sizeWithFont:cell.titleLabel.font   
             
constraninedToSize:CGSizeMake(FLT_MAX,FLT_MAX)</span> 
             
lineBreakMode:UILineBreakModeWordWrap];
</span>這樣labelSize.width就是這個titleLable的真實寬度,在得到這個寬度后我們就可以計算出標識圖片的位置。

 本文由用戶 reyzhang 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!