zoukankan      html  css  js  c++  java
  • lable 以及cell的高度自适应

    1.先cell自适应

    可以先拿到 这个lable里文字的高度

    //lable自适应的高度
    -(CGFloat)heightWithString:(NSString *)aString
    {
        
        CGRect r = [aString boundingRectWithSize:CGSizeMake(self.tableView.frame.size.width - 28, 20000) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:FourT3GongNengZiHaoFont} context:nil];
        
        return r.size.height;
    }
    

     在cell的高度返回方法里面调用方法

    -(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
    {
            return [ActiviteDetail2TwoCell cellHeight:[self heightWithString:_activityInfoNewModel.activityDes]];
      
    }
    

     在cell里填写此cell需要的高度

    +(CGFloat)cellHeight:(CGFloat)height
    {
      
        return 72+height;
    }
    

    此时cell可以根据文字的高度 而适应高度了

    那么cell里的lable的高度怎么设置??

    正常在初始化里写正常的高度就可以

        self.detailLable.frame = CGRectMake(14, CGRectGetMaxY(self.titleLable.frame)+28+1, CurrentScreenWidth-28, 23);
    

     在cell里写一个改变这个detail的方法

    //赋值 and 自动换行,计算出cell的高度
    -(void)setDetailLableText:(NSString *)text
    {
        //获得当前cell高度
        CGRect frame = [self frame];
        //文本赋值
        self.detailLable.text = text;
        //设置label的最大行数
        self.detailLable.numberOfLines = 10;
        CGSize size = CGSizeMake(CurrentScreenWidth-14-30-14, 1000);
        CGSize labelSize = [self.detailLable.text sizeWithFont:self.detailLable.font constrainedToSize:size lineBreakMode:NSLineBreakByClipping];
        self.detailLable.frame = CGRectMake(self.detailLable.frame.origin.x, self.detailLable.frame.origin.y, labelSize.width, labelSize.height);
        
        //计算出自适应的高度
        frame.size.height = labelSize.height;
        
        self.frame = frame;
    }
    

     出来再cell的赋值里面调用这个方法

    - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
    {      ActiviteDetail2TwoCell *cellTwo = [tableView dequeueReusableCellWithIdentifier:@"ActiviteDetail2TwoCell" forIndexPath:indexPath];
             cellTwo.selectionStyle = UITableViewCellSelectionStyleNone;
    
           [cellTwo setDetailLableText:_activityInfoNewModel.activityDes];
    
    }
    

     lable的行间距设置

     if (cellTwo.detailLable.text!=nil) { //这里要判断一下 改label不为空的时候  不判空 会蹦掉
                    NSMutableAttributedString * attributedString1 = [[NSMutableAttributedString alloc] initWithString:cellTwo.detailLable.text];
                    NSMutableParagraphStyle * paragraphStyle1 = [[NSMutableParagraphStyle alloc] init];
                    [paragraphStyle1 setLineSpacing:3];
                    [attributedString1 addAttribute:NSParagraphStyleAttributeName value:paragraphStyle1 range:NSMakeRange(0, [cellTwo.detailLable.text length])];
                    [cellTwo.detailLable setAttributedText:attributedString1];
                    [cellTwo.detailLable sizeToFit];
                }
    

     lable 根据宽度适应字体

    titleLabel.adjustsFontSizeToFitWidth = YES;
    
  • 相关阅读:
    常用数字处理小技巧
    C# 绘制统计图(柱状图, 折线图, 扇形图) zhuan
    谈谈防 SQL 注入式攻击策略
    ASP.NET2.0小技巧--内部控件权限的实现
    宝刀不老: Cookie
    IP地址与子网掩码总结
    ASP.NET 2.0下实现匿名用户向注册用户的迁移(上) zhuan
    [翻译].net 2.0(c#)下简单的FTP应用程序 zhuan
    ASP.NET2.0自动搜索文件组成导航系统
    正则表达式实现资料验证的技术总结
  • 原文地址:https://www.cnblogs.com/miaomiaocat/p/5455263.html
Copyright © 2011-2022 走看看