1 - (void)viewDidLoad 2 { 3 [super viewDidLoad]; 4 // Do any additional setup after loading the view, typically from a nib. 5 6 NSString *text = @"tw ia nwifei xantianwif eixan tianwi feixan"; 7 8 //設定字型,包括字型及其大小 9 UIFont *font = [UIFont fontWithName:@"Arial" size:50.0f];10 11 //label可設定的最大高度和寬度12 CGSize maxSize = CGSizeMake(320.f, MAXFLOAT);13 14 //字串在指定地區內按照指定的字型顯示時,需要的高度和寬度(寬度在字串只有一行時有用)15 //一般用法:指定地區的寬度而高度用MAXFLOAT,則傳回值包含對應的高度16 //如果指定地區的寬度指定,而字串要顯示的地區的高度超過了指定地區的高度,則高度返回017 //核心:多行顯示,指定寬度,擷取高度18 CGSize labelSize = [text sizeWithFont:font19 constrainedToSize:CGSizeMake(320.f, MAXFLOAT)20 lineBreakMode:NSLineBreakByWordWrapping];21 22 //指定用於顯示的地區23 CGRect rect = CGRectMake(0.0f, 0.0f, labelSize.width, labelSize.height);24 25 //CGRectZero表示(0,0,0,0),即留待後面再設定26 UILabel *myLabel = [[UILabel alloc] initWithFrame:CGRectZero];27 28 //label預設只顯示一行,把numberofline設為0,即表示不限制行數,根據實際顯示29 [myLabel setNumberOfLines:0];30 31 myLabel.frame = rect;32 myLabel.text = text;33 myLabel.font = font;34 myLabel.textColor = [UIColor grayColor];35 36 //把label加入到view裡,這樣才能顯示37 [self.view addSubview:myLabel];38 39 //引用計數減一,因為在上一行 addSubview 時,view已經把mylabel的引用計數加一了40 [myLabel release];41 42 }43 44 -(void)test45 {46 NSString *text = @"asfawlfaw;lojf";47 UIFont *font = [UIFont fontWithName:@"Arial" size:20.0f];48 49 //字串在指定地區內按照指定的字型顯示時,需要的高度和寬度(寬度在字串只有一行時有用)50 //一般用法:指定地區的寬度而高度用MAXFLOAT,則傳回值包含對應的高度51 //如果指定地區的寬度指定,而字串要顯示的地區的高度超過了指定地區的高度,則高度返回052 //核心:多行顯示,指定寬度,擷取高度53 CGSize labelSize = [text sizeWithFont:font54 constrainedToSize:CGSizeMake(320.f, MAXFLOAT)55 lineBreakMode:NSLineBreakByWordWrapping];56 57 //字串用指定字型進行單行顯示時,需要的高度和寬度58 CGSize size1 = [text sizeWithFont:font];59 60 //字串用指定字型在指定地區進行單行顯示時,需要的高度和寬度;61 //一般的用法是,指定地區的高度固定而寬度用MAXFLOAT,則傳回值包含對應的寬度62 //如果指定地區的寬度不夠,則寬度返回0;高度不夠則沒影響63 //核心:單行顯示,指定地區的寬度要夠大,擷取寬度64 CGSize size2 = [text sizeWithFont:font65 constrainedToSize:CGSizeMake(MAXFLOAT, 100.0f)];66 67 68 //字串用指定字型指定寬度和指定換行方式顯示時,需要的高度和寬度69 //雖然指定了換行方式,在實際計算時也會換行,但返回結果只會返回第一行的高度和寬度70 //如果指定寬度小於字串寬度,則寬度返回071 //核心:貌似沒有什麼用72 CGSize size3 = [text sizeWithFont:font73 forWidth:400.0f74 lineBreakMode:NSLineBreakByWordWrapping];75 76 CGFloat f = 0.0f;77 78 //雖然指定了換行方式,在實際計算時也會換行,但返回的結果只是第一行的高度很寬度79 //指定了應該顯示的字型,最小的字型,實際的字型,在實際計算中,如果寬度不夠,則盡量縮小字串的字型直至能夠一行全部顯示,如果縮到最小還不能完全顯示字串,則進行截斷,返回截斷後的字串的高度和寬度80 //字型實際的大小,存放在 actualFontSize裡81 CGSize size4 = [text sizeWithFont:font82 minFontSize:10.0f83 actualFontSize:&f84 forWidth:100.0f85 lineBreakMode:NSLineBreakByWordWrapping];86 87 }