iOS開發--根據label內容動態設定label大小

來源:互聯網
上載者:User

兩個方法:

- (CGSize)sizeWithAttributes:(nullable NSDictionary<NSString *, id> *)attrs NS_AVAILABLE(10_0, 7_0);
- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(nullable NSDictionary<NSString *, id> *)attributes context:(nullable NSStringDrawingContext *)context NS_AVAILABLE(10_11, 7_0);

eg1:

- (void)viewDidLoad {    [super viewDidLoad];    NSString *str = @"原紗央莉選擇了加入AV界為自己謀求穩定的工作,並且選擇了SOD作為自己的東家。在2008年11月25日sabra雜誌裡當時原紗央莉連載的專欄“SAORIchewBE”裡公開了要加入AV的事情。";    //設定按照什麼字型大小來計算,你可以添加其他的屬性    NSDictionary *attrs = @{NSFontAttributeName : [UIFont systemFontOfSize:25]};    //label1    UILabel *label1 = [[UILabel alloc]init];    label1.backgroundColor = [UIColor yellowColor];    CGSize size1 = [str sizeWithAttributes:attrs];//方法1,計算大小,但是只有一行    label1.frame = (CGRect){{50,50},size1};    label1.text = str;    [self.view addSubview:label1];    //label2    UILabel *label2 = [[UILabel alloc]init];    label2.backgroundColor = [UIColor purpleColor];    CGSize size2 = CGSizeMake(200, MAXFLOAT);//給出一個限制size,設定寬度200,高度可變    CGRect rect2 = [str boundingRectWithSize:size2                                     options:NSStringDrawingUsesLineFragmentOrigin attributes:attrs                                     context:nil];//方法2,計算大小,但是會根據size2來限制    CGFloat label2_H = rect2.size.height;    label2.frame = CGRectMake(50, 100, size2.width, label2_H);    [self.view addSubview:label2];    label2.text = str;    label2.numberOfLines = 0;    //label1和label2都沒有設定字型的大小,所以你會感覺label有很多空白,看label3    //label3設定了字型大小,因為預設的字型大小小於25,所以label1和label2都有空白,現在設定label3的字型和計算依據的字型一樣大,看效果    UILabel *label3 = [[UILabel alloc]init];    label3.backgroundColor = [UIColor grayColor];    CGSize size3 = CGSizeMake(200, MAXFLOAT);    CGRect rect3 = [str boundingRectWithSize:size2                                     options:NSStringDrawingUsesLineFragmentOrigin attributes:attrs                                     context:nil];//方法2    CGFloat label3_H = rect3.size.height;    label3.frame = CGRectMake(150, 300, size3.width, label3_H);    [self.view addSubview:label3];    label3.font = [UIFont systemFontOfSize:25];//相比label2多了這句代碼    label3.text = str;    label3.numberOfLines = 0;}





相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.