1,根据label中的文字内容自动换行显示的方法
1>,认识两个属性
@property(nonatomic) NSInteger numberOfLines;
@property(nonatomic) NSLineBreakMode lineBreakMode;
其中NSLineBreakMode为枚举类型
typedef NS_ENUM(NSInteger, NSLineBreakMode) { /* What to do with long lines */
NSLineBreakByWordWrapping = 0, /* Wrap at word boundaries, default */
NSLineBreakByCharWrapping, /* Wrap at character boundaries */
NSLineBreakByClipping, /* Simply clip */
NSLineBreakByTruncatingHead, /* Truncate at head of line: "...wxyz" */
NSLineBreakByTruncatingTail, /* Truncate at tail of line: "abcd..." */
NSLineBreakByTruncatingMiddle /* Truncate middle of line: "ab...yz" */
} NS_ENUM_AVAILABLE_IOS(6_0);
2> 方法
第一步:设置Label所能显示的行数,即设置numberOfLines属性, label.numberOfLines = 0;当该属性为0时表示没有限制
第二步:设置Label内容的显示方式,及设置lineBreakMode属性 label.lineBreakMode = NSLineBreakByWordWrapping;表示自适应
第三步:重新设置label的frame 此事需要计算frame
3>例子 (将宽度固定,自适应计算高度)
// 1 初始化label,并设置属性
UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 300, 100)];
label.numberOfLines = 0;
label.lineBreakMode = NSLineBreakByWordWrapping;
// 2 初始化label中显示的内容
NSString *text = @"紫陌红尘,蓦然回首。多少的春花秋月;多少的逝水沉香;多少的海誓山盟,如沿途的风景花开花谢。人世间的情缘触痛了多少无言的感慨,情深缘浅的风吹散了多 少相聚离散。花开是有情,花落是无意。来者是萍水相逢,去者是江湖相忘。缘起时,我在人群中看到你。缘灭时,你消失在人群中。";
// 3 固定label的宽度为300不变,计算label的高度
CGSize textSize = [text boundingRectWithSize:CGSizeMake(300, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14]} context:nil].size;
CGRect rect = label.frame;
rect.size.height = textSize.height;
label.frame = rect;