IOS開發中UILabel自適應大小顯示的方法

1,根據label中的文字內容自動換行顯示的方法app

  1>,認識兩個屬性atom

    @property(nonatomic) NSInteger numberOfLines;spa

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

相關文章
相關標籤/搜索