1,根據label中的文字內容自動換行顯示的方法app
1>,認識兩個屬性atom
@property(nonatomic) NSInteger numberOfLines;spa
@property(nonatomic) NSLineBreakMode lineBreakMode;ip
其中NSLineBreakMode爲枚舉類型it
typedef NS_ENUM(NSInteger, NSLineBreakMode) { /* What to do with long lines */io
NSLineBreakByWordWrapping = 0, /* Wrap at word boundaries, default */class
NSLineBreakByCharWrapping, /* Wrap at character boundaries */cli
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;