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 //如果指定區域的寬度指定,而字符串要顯示的區域的高度超過了指定區域的高度,則高度返回0 17 //核心:多行顯示,指定寬度,獲取高度 18 CGSize labelSize = [text sizeWithFont:font 19 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)test 45 { 46 NSString *text = @"asfawlfaw;lojf"; 47 UIFont *font = [UIFont fontWithName:@"Arial" size:20.0f]; 48 49 //字符串在指定區域內按照指定的字體顯示時,需要的高度和寬度(寬度在字符串只有一行時有用) 50 //一般用法:指定區域的寬度而高度用MAXFLOAT,則返回值包含對應的高度 51 //如果指定區域的寬度指定,而字符串要顯示的區域的高度超過了指定區域的高度,則高度返回0 52 //核心:多行顯示,指定寬度,獲取高度 53 CGSize labelSize = [text sizeWithFont:font 54 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:font 65 constrainedToSize:CGSizeMake(MAXFLOAT, 100.0f)]; 66 67 68 //字符串用指定字體指定寬度和指定換行方式顯示時,需要的高度和寬度 69 //雖然指定了換行方式,在實際計算時也會換行,但返回結果只會返回第一行的高度和寬度 70 //如果指定寬度小於字符串寬度,則寬度返回0 71 //核心:貌似沒有什么用 72 CGSize size3 = [text sizeWithFont:font 73 forWidth:400.0f 74 lineBreakMode:NSLineBreakByWordWrapping]; 75 76 CGFloat f = 0.0f; 77 78 //雖然指定了換行方式,在實際計算時也會換行,但返回的結果只是第一行的高度很寬度 79 //指定了應該顯示的字體,最小的字體,實際的字體,在實際計算中,如果寬度不夠,則盡量縮小字符串的字體直至能夠一行全部顯示,如果縮到最小還不能完全顯示字符串,則進行截斷,返回截斷后的字符串的高度和寬度 80 //字體實際的大小,存放在 actualFontSize里 81 CGSize size4 = [text sizeWithFont:font 82 minFontSize:10.0f 83 actualFontSize:&f 84 forWidth:100.0f 85 lineBreakMode:NSLineBreakByWordWrapping]; 86 87 }