• 04---动态改变Cell的高度


    动态改变Cell的高度

    1.利用tableView代理方法的返回值决定每一行cell的高度

    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath

     2.UIFont

    // 返回字体的行高

    * [UIFont systemFontOfSize:10].lineHeight

    3.动态改变cell的高度例子

    #pragma mark - 返回每一行cell的高度
    - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
    {
        // 1.取出这行微博的内容
        Status *s = _statuses[indexPath.row];
        // 2.计算微博内容大小占据的高度
        NSString *text = s.text;
        CGFloat textHeight  = [text sizeWithFont:[UIFont systemFontOfSize:15] constrainedToSize:CGSizeMake(250,MAXFLOAT) lineBreakMode:NSLineBreakByWordWrapping].height;
        // sizeWithFont: 根据字体来算text的宽高
        // constrainedToSize: 限制算出来的文集的宽度和高度 这里限制宽度为250个像素点
        // lineBreakMode: 换行的模式   
        // 3.计算昵称的高度
        CGFloat screenNameHeight = [UIFont systemFontOfSize:13].lineHeight;
        
        // 4.cell的高度 微博内容的高度 + 微博昵称的高度 + cell内部label之间的高度
        CGFloat cellHeight = screenNameHeight +textHeight +35// 设置cell的高度
        return  cellHeight < 75 ? 75 : cellHeight;
    }

    NSDictionary *attributes = @{NSFontAttributeName: [UIFont fontWithName:@"HelveticaNeue" size:14]};
    CGRect rect = [textToMeasure boundingRectWithSize:CGSizeMake(width, MAXFLOAT)  
                     options:NSStringDrawingUsesLineFragmentOrigin attributes:attributes context:nil];
    
    
    iOS7中用以下方法
    
      - (CGSize)sizeWithAttributes:(NSDictionary *)attrs;
      替代过时的iOS6中的- (CGSize)sizeWithFont:(UIFont *)font 方法
    
      // iOS7_API_根据文字 字数动态确定Label宽高
    // 设置Label的字体 HelveticaNeue  Courier
        UIFont *fnt = [UIFont fontWithName:@"HelveticaNeue" size:24.0f];
        _nameLabel.font = fnt;
        // 根据字体得到NSString的尺寸
        CGSize size = [_nameLabel.text sizeWithAttributes:[NSDictionary dictionaryWithObjectsAndKeys:fnt,NSFontAttributeName, nil]];
        // 名字的H
        CGFloat nameH = size.height;
        // 名字的W
        CGFloat nameW = size.width
        _nameLabel.frame = CGRectMake(0, 0, nameW,nameH);
  • 相关阅读:
    大叔程序员的第六天 @布局&eclipse配置文件
    20130305Android自定义Button按钮显示样式
    solr学习(1)
    Lucence3.0学习(1)
    Liskov Substitution Principle (LSP) OO设计的里氏替换原则
    对于高内聚低耦合的理解
    ASP.NET 网站中的共享代码文件夹
    二探String类型
    初探String类型
    版本控制初探1
  • 原文地址:https://www.cnblogs.com/lszwhb/p/3860059.html
Copyright © 2020-2023  润新知