iOS根據文字字數動態確定Label寬高


我們有時候在寫項目的時候,會碰到,意見反饋,還有其他地方,講座活動細則等需要大篇展示的文本,

因為每次服務器返回的內容大小不一,所以需要動態的調整label的寬高:

在ios 6 的時候可以:

-(void)creatLabel
{
    //根據文字 字數動態確定label寬高
    
    _nameLabel = [[UILabel alloc]init];
    
    _nameLabel.frame = CGRectMake(100, 100, 100, 40);
    
    _nameLabel.backgroundColor = [UIColor redColor];
    
    _nameLabel.text = @"菩提本無樹";
    
    //設置label的字體  HelveticaNeue  Courier
    UIFont *font = [UIFont fontWithName:@"HelveticaNeue" size:24.0f];
    _nameLabel.font = font;
    //根據字體得到nsstring的尺寸
    CGSize size = [_nameLabel.text sizeWithAttributes:[NSDictionary dictionaryWithObjectsAndKeys:font,NSFontAttributeName, nil]];
    //名字的高
    CGFloat nameH = size.height;
    //名字的寬
    CGFloat nameW = size.width;
    
    _nameLabel.frame = CGRectMake(100, 100, nameW, nameH);
    
    [self.view addSubview:_nameLabel];
}

 

ios 7 的時候可以:

-(void)creatTextField
{
    //根據正文內容多少,動態確定正文content的frame
    
    _content = [[UILabel alloc]init];
    
    _content.frame = CGRectMake(17, 200, self.view.frame.size.width-34, 120);
    
    _content.backgroundColor = [UIColor redColor];
    
    _content.clipsToBounds = YES;
    
    _content.layer.cornerRadius = 10;
    
    _content.numberOfLines = 0;
    
    _content.layer.borderColor = [UIColor grayColor].CGColor;
    
    _content.layer.borderWidth = 0.8;
    
    _content.text = @"今天天氣好晴朗,今天天氣好晴朗今天天氣好晴朗,今天天氣好晴朗今天天氣好晴朗,今天天氣好晴朗今天天氣好晴朗,今天天氣好晴朗今天天氣好晴朗,今天天氣好晴朗今天天氣好晴朗,今天天氣好晴朗今天天氣好晴朗,今天天氣好晴朗今天天氣好晴朗,今天天氣好晴朗今天天氣好晴朗,今天天氣好晴朗今天天氣好晴朗,今天天氣好晴朗今天天氣好晴朗,今天天氣好晴朗今天天氣好晴朗,今天天氣好晴朗今天天氣好晴朗,今天天氣好晴朗今天天氣好晴朗,今天天氣好晴朗今天天氣好晴朗,今天天氣好晴朗今天天氣好晴朗,今天天氣好晴朗今天天氣好晴朗,今天天氣好晴朗今天天氣好晴朗,今天天氣好晴朗今天天氣好晴朗,今天天氣好晴朗今天天氣好晴朗,今天天氣好晴朗今天天氣好晴朗,今天天氣好晴朗";
    
    //寬度
    CGFloat contentW = self.view.bounds.size.width - 34;
    
    //label的字體 HelveticaNeue  Courier
    UIFont *fnt = [UIFont fontWithName:@"HelveticaNeue" size:18.0f];
    
    _content.font = fnt;
    
    // iOS7中用以下方法替代過時的iOS6中的sizeWithFont:constrainedToSize:lineBreakMode:方法
    
    CGRect tmpRect = [_content.text boundingRectWithSize:CGSizeMake(contentW, 1000) options:NSStringDrawingUsesLineFragmentOrigin attributes:[NSDictionary dictionaryWithObjectsAndKeys:fnt,NSFontAttributeName, nil] context:nil];

    // 高度H
    CGFloat contentH = tmpRect.size.height;
    
    NSLog(@"調整后的顯示寬度:%f,顯示高度:%f",contentW,contentH);
    
    _content.frame = CGRectMake(17, 200, contentW,contentH);
    
    [self.view addSubview:_content];
}

 

這樣可以很好的解決這個問題!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM