您的位置:首页 > 移动开发 > IOS开发

iOS-动态计算Label的高度

2016-04-15 16:01 489 查看
一. 要求

1.根据网络请求的回来的字符串内容,动态计算Label的高度.

二. 注意点

1. 要注意设置label 的 numberOfLines 为0;

2. MAXFLOAT 的作用. 设置高度无限大.

三.代码

#import "ViewController.h"

@interface ViewController ()

@property (nonatomic,strong) UILabel * label;

@end

@implementation ViewController

- (void)viewDidLoad

{

[super viewDidLoad];

[self createLabel];

}

- (void)createLabel

{

self.label = [[UILabel alloc] init];

self.label.backgroundColor = [UIColor yellowColor];

NSString * str = @"1、毕业后才知道校园恋爱是最纯洁的;\n2、毕业后才知道学习是最重要的;\n3、毕业后才知道校园生活是最幸福的;\n4、毕业后才知道宿舍生活是最好的;\n5、毕业后才知道食堂的饭菜是最便宜的;\n6、毕业后才知道上学是最美妙的事。\n7、毕业后才知道学生花钱最大手大脚......";

self.label.text = str;

self.label.numberOfLines = 0;

[self.view addSubview:self.label];

UIFont * font = self.label.font;

// iOS 7.0 之前的方法.已经被弃用

// CGSize size = [self.label.text sizeWithFont:font constrainedToSize:CGSizeMake(_label.frame.size.width, MAXFLOAT) lineBreakMode:UILineBreakModeWordWrap];

NSDictionary * dict = @{

NSFontAttributeName : font

};

//计算label的文字宽高

CGSize size = [self.label.text boundingRectWithSize:CGSizeMake(self.view.frame.size.width, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:dict context:nil].size;

CGFloat nameH = size.height;

CGFloat nameW = size.width;

NSLog(@"w: %f --h: %f",nameW,nameH);

// 设置label的动态frame

self.label.frame = CGRectMake(0, 30, nameW, nameH);

}

@end
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: