IOS开发中UILabel自适应大小显示的方法

1,根据label中的文字内容自动换行显示的方法

  1>,认识两个属性

    @property(nonatomic) NSInteger numberOfLines;

    @property(nonatomicNSLineBreakMode 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;

 

 

posted @ 2015-08-15 21:30  IT菜鸟来袭  阅读(1284)  评论(0编辑  收藏  举报