让UILabel根据内容自动调整大小

固定宽度的UILabel让内容自动换行并根据内容变更高度

1
2
3
4
5
6
7
8
9
10
11
12
13
14
NSString *str = @"UILabel中显示的内容,达到UILabel设置的最大宽度时,自动换行";
UIFont *font = [UIFont systemFontOfSize:14]; //内容采用的字体大小
CGFloat height = [str sizeWithFont:font constrainedToSize:CGSizeMake(280, CGFLOAT_MAX) lineBreakMode:NSLineBreakByWordWrapping].height; //根据文本内容计算高度
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 10, 280, height)]; //根据计算的高度创建UILabel实例
label.font = font;
label.numberOfLines = 0; //必须定义这个属性,否则UILabel不会换行
label.textColor = RGBCOLOR(102, 153, 102); //内容文本颜色
label.textAlignment = NSTextAlignmentLeft; //内容文本对齐方式
label.text = str;
[self.view addSubview:label];

单行显示的UILabel根据内容变更宽度

1
2
3
4
5
6
7
8
9
10
11
12
NSString *str = @"UILabel中单行显示的内容,UILabel将会调整宽度为本文长度";
UIFont *font = [UIFont systemFontOfSize:14]; //内容采用的字体大小
CGFloat width = [str sizeWithFont:font constrainedToSize:CGSizeMake(CGFLOAT_MAX, 20)].height; //计算单行显示时文本所需的宽度
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 10, width, 20)]; //根据计算的宽度创建UILabel实例
label.font = font;
label.textColor = RGBCOLOR(102, 153, 102); //内容文本颜色
label.textAlignment = NSTextAlignmentLeft; //内容文本对齐方式
label.text = str;
[self.view addSubview:label];

读取 .plist 文件内的数据

有时会将静态数据存放到 .plist 文件中,就需要读取 .plist 文件作为数据源。
如果对 .plist 文件打开方式选择Source Code,你会看见它其实是一个xml文件。

读取 .plist 文件的方式如下,

1
2
3
NSString *plistPath = [[NSBundle mainBundle] pathForResource:@"listFileName" ofType:@"plist"];
NSArray *array = [[NSArray alloc] initWithContentsOfFile:plistPath]; //读取到数组
NSDictionary *dictionary = [[NSDictionary alloc] initWithContentsOfFile:plistPath]; //读取到字典对象

就这么简单。
另外,从 NSDictionary 中拿数据的方式如下,

1
2
3
NSDictionary *userDict = [dictionary objectForKey:@"Users"];
self.userNameLbl.text = [NSString stringWithFormat:@"%@", [userDict objectForKey:@"Name"]];
self.userNumberLbl.text = [NSString stringWithFormat:@"%@", [userDict objectForKey:@"Number"]];