NSString-計算文本的寬度和高度

jopen 9年前發布 | 5K 次閱讀 Objective-C

在實際的代碼應用中,我們常常需要計算,特定文本的寬度和高度。然后,根據長度和寬度值,動態的設置容器(如:UILabel)的長和寬來進行適應。


假如:我們有如下一段文本。

UIFont *theFont  = [UIFont systemFontOfSize:14];

NSString *strText = @"這是一段很長的字符串,我們將根據要求的字體大小,來計算實際需要的寬度和高度!";


1.計算文本的寬度

NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithObject:[UIFont systemFontOfSize:14] forKey:NSFontAttributeName];  
CGSize size = [strText boundingRectWithSize:CGSizeMake(MAXFLOAT, 0.0) options:NSStringDrawingUsesLineFragmentOrigin attributes:dic context:nil].size;  
  

2.計算文本的高度

NSMutableDictionary *dic = [NSMutableDictionary dictionaryWithObject:[UIFont systemFontOfSize:14] forKey:NSFontAttributeName];  
CGSize size = [strText boundingRectWithSize:CGSizeMake(100.0, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:dic context:nil].size;  
  

這樣,用boundingRectWithSize:方法得到了,長度和寬度,就可以對容器的大小進行控制。

關于NSLineBreakMode枚舉類型,如下所示,已經講的很清楚了,就不贅述了。

typedef NS_ENUM(NSInteger, NSLineBreakMode) {

NSLineBreakByWordWrapping =0,

NSLineBreakByCharWrapping,

NSLineBreakByClipping,

NSLineBreakByTruncatingHead,

NSLineBreakByTruncatingTail,

NSLineBreakByTruncatingMiddle

}NS_ENUM_AVAILABLE_IOS(6_0); </pre>

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