UILabel *label = [[UILabel alloc] init];
label.numberOfLines = 0;
label.backgroundColor = [[UIColor yellowColor] colorWithAlphaComponent:0.3];
label.frame = CGRectMake(0, 20, self.view.bounds.size.width, 0);
label.text = @"当一个key-value对在缓存中时,缓存维护它的一个强引用。存储在NSCache中的通用数据类型通常是实现了NSDiscardableContent协议的对象。在缓存中存储这类对象是有好处的,因为当不再需要它时,可以丢弃这些内容,以节省内存。默认情况下,缓存中的NSDiscardableContent对象在其内容被丢弃时,会被移除出缓存,尽管我们可以改变这种缓存策略。如果一个NSDiscardableContent被放进缓存,则在对象被移除时,缓存会调用discardContentIfPossible方法。";
[label sizeToFit];
[self.view addSubview:label];
UILabel *label2 = [[UILabel alloc] init];
label2.backgroundColor = [[UIColor blueColor] colorWithAlphaComponent:0.3];
label2.numberOfLines = 0;
label2.frame = CGRectMake(0, CGRectGetMaxY(label.frame), 300, 0);
label2.text = @"当一个key-value对在缓存中时,缓存维护它的一个强引用。存储在NSCache中的通用数据类型通常是实现了NSDiscardableContent协议的对象。在缓存中存储这类对";
[label2 sizeToFit];
[self.view addSubview:label2];
UILabel *label3 = [[UILabel alloc] init];
label3.backgroundColor = [[UIColor redColor] colorWithAlphaComponent:0.3];
label3.numberOfLines = 0;
label3.frame = CGRectMake(0, CGRectGetMaxY(label2.frame), 300, 0);
label3.text = @"当一个key-val\n\nue对在缓\n存中时,缓存维\n护它的一个\n强引用。存储在\nNSCache中的\n通用数据类型通常\n是实现了NSDisca\nrdableContent。";
[self.view addSubview:label3];
[label3 sizeToFit];
总结
设置lable的大小以后,根据sizeToFit自动设置文本大小,遵守以下几个规则:
1,设置的frame的width作为最大的文本宽度,不可超过
2,如果文本中有换行,使得每行的宽度都不超过frame中的width,通过sizeToFit得到的宽将会是实际显示文本所需要的宽度,而不是width
网友评论