得到UILable在設置字體樣式后的真實長度
在用代碼創建UI時,首先就是要創建UI的frame,一般的控件在創建時都會調用如下函數:</span>initWithFrame:(CGRect)frame.在取frame的時候有幾種情況,一是你已知當前控件在父視圖中的絕對位置,你可以直接輸入坐標位置及大小就可以創建了。還有一種就是在已知控件的基礎上做參考,來計算自己的坐標位置。我在工作中就遇到了一個這樣問題:</span>我有一個cell,cell上顯示了標題(標題是顯示是用的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的真實寬度,在得到這個寬度后我們就可以計算出標識圖片的位置。