// 設置文本的換行寬度spa
self.contentLabel.preferredMaxLayoutWidth = [UIScreen mainScreen].bounds.size.width - 16;3d
- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(NSDictionary *)attributes context:(NSStringDrawingContext *)context NS_AVAILABLE_IOS(7_0);
size:限制尺寸,用於計算文本繪製時佔據的矩形塊,例如微博開發中size.w不超過scence.w。能夠將size.y設置爲無限大MAXFLOAT以便於顯示全部文字內容。
option:文本繪製時的附加選項。
有四種類型:code
1.NSStringDrawingTruncatesLastVisibleLine orm
2.NSStringDrawingUsesLineFragmentOrigin 對象
3. NSStringDrawingUsesFontLeading
4. NSStringDrawingUsesDeviceMetrics
一般使用NSStringDrawingUsesLineFragmentOrigin,若是options參數爲NSStringDrawingUsesLineFragmentOrigin,那麼整個文本將以每行組成的矩形爲單位計算整個文本的尺寸。
attributes:將文本UIFront存入字典傳到這裏。例如, NSDictionary *dict = @{NSFontAttributeName : font}
context:context上下文。包括一些信息,例如如何調整字間距以及縮放。最終,該對象包含的信息將用於文本繪製。該參數可爲 nil 。開發
#import "ViewController.h" @interface ViewController () @end @implementation ViewController - (void)viewDidLoad { [super viewDidLoad]; UILabel *label = [[UILabel alloc]init]; [self.view addSubview:label]; NSString *str = @"在採訪中他表示:「我想如今是年輕人的時間了,他們是時候上場去表現了。」他還表示,雖然表明本身國家打球很美好,可是他想穿着湖人隊球衣打完本身的最後一場比賽。常規賽戰績不佳,許多人建議科比去奧運會上帶領美國男籃,爲本身的職業生涯畫上一個完美的句點。有消息曾說科比考慮過出戰今年的奧運會,但科比今天給出的迴應是「NO」,在去年的11月30日科比宣佈退役以來,他的下一步舉動就被許多球迷關心。從2006年開始,科比第一次參加了美國國家隊,在2007年美州籃球錦標賽中,他幫助球隊在該項比賽中取得了10-0的成績,贏得了美錦賽的金牌並得到了2008年北京奧運會的參賽資格。"; label.text = str; label.numberOfLines = 0; CGSize textSize = [self sizeWithString:label.text font:[UIFont systemFontOfSize:15] maxSize:CGSizeMake(200, MAXFLOAT)]; label.frame = CGRectMake(20,20, textSize.width, textSize.height); } - (CGSize)sizeWithString:(NSString *)str font:(UIFont *)font maxSize:(CGSize)maxSize { NSDictionary *dict = @{NSFontAttributeName : font}; CGSize size = [str boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:dict context:nil].size; return size; } @end
又如:it
// // NSString+Extension.h #import <Foundation/Foundation.h> @interface NSString (Extension) - (CGSize)sizeWithFont:(UIFont *)font maxSize:(CGSize)maxSize; @end // // NSString+Extension.m #import "NSString+Extension.h" @implementation NSString (Extension) - (CGSize)sizeWithFont:(UIFont *)font maxSize:(CGSize)maxSize { NSDictionary *dict = @{NSFontAttributeName: font}; CGSize textSize = [self boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin attributes:dict context:nil].size; return textSize; } @end