• 【转】UITableViewCell自适应高度 UILabel自适应高度和自动换行


    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
        // 列寬
        CGFloat contentWidth = self.tableView.frame.size.width;
        // 用何種字體進行顯示
        UIFont *font = [UIFont systemFontOfSize:13];
       
        // 該行要顯示的內容
        NSString *content = [data objectAtIndex:indexPath.row];
        // 計算出顯示完內容需要的最小尺寸
        CGSize size = [content sizeWithFont:font constrainedToSize:CGSizeMake(contentWidth, 1000) lineBreakMode:UILineBreakModeWordWrap];
       
        // 這裏返回需要的高度
        return size.height;
    }

    // Customize the appearance of table view cells.
    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
       
        static NSString *CellIdentifier = @"Cell";
        // 列寬
        CGFloat contentWidth = self.tableView.frame.size.width;
        // 用何種字體進行顯示
        UIFont *font = [UIFont systemFontOfSize:13];
       
        // 該行要顯示的內容
        NSString *content = [data objectAtIndex:indexPath.row];
        // 計算出顯示完內容需要的最小尺寸
        CGSize size = [content sizeWithFont:font constrainedToSize:CGSizeMake(contentWidth, 1000) lineBreakMode:UILineBreakModeWordWrap];
       
        // 構建顯示行
        UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
        if (cell == nil) {
            cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
        }
       
        CGRect rect = [cell.textLabel textRectForBounds:cell.textLabel.frame limitedToNumberOfLines:0];
        // 設置顯示榘形大小
        rect.size = size;
        // 重置列文本區域
        cell.textLabel.frame = rect;
       
        cell.textLabel.text = content;
       
        // 設置自動換行(重要)
        cell.textLabel.numberOfLines = 0;
        // 設置顯示字體(一定要和之前計算時使用字體一至)
        cell.textLabel.font = font;

        return cell;
    }
    本文转自http://mrjeye.iteye.com/blog/1045785


    文章来源:http://blog.csdn.net/csj1987/article/details/6662852

     
    1. //初始化label  
    2. UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0,0,0,0)];  
    3. //设置自动行数与字符换行  
    4. [label setNumberOfLines:0];  
    5. label.lineBreakMode = UILineBreakModeWordWrap;   
    6. // 测试字串  
    7.  NSString *s = @"这是一个测试!!!adsfsaf时发生发勿忘我勿忘我勿忘我勿忘我勿忘我阿阿阿阿阿阿阿阿阿阿阿阿阿啊00000000阿什顿。。。";  
    8. UIFont *font = [UIFont fontWithName:@"Arial" size:12];  
    9. //设置一个行高上限  
    10. CGSize size = CGSizeMake(320,2000);  
    11. //计算实际frame大小,并将label的frame变成实际大小  
    12.  CGSize labelsize = [s sizeWithFont:font constrainedToSize:size lineBreakMode:UILineBreakModeWordWrap];  
    13. [label setFrame:CGRectMake:(0,0, labelsize.width, labelsize.height)]; 
  • 相关阅读:
    查找父/子控件(元素、节点)
    【转载】单点系统架构的可用性与性能优化
    【转载】互联网架构,如何进行容量设计?
    【转载】细聊分布式ID生成方法
    【转载】秒杀系统架构优化思路
    【转载】程序员这口饭-职业规划解决方案
    【转载】一位软件工程师的6年总结
    【转载】VS工具使用——代码生成函数关系图
    【转载】VS工具使用——代码图
    【转载】一些VS2013的使用技巧
  • 原文地址:https://www.cnblogs.com/jz319/p/3781367.html
Copyright © 2020-2023  润新知