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 }