iOS开发列表行cell高度自适应方法?

iOS开发列表行cell高度自适应方法?_第1张图片
『导言』

iOS开发中,对于一个列表中的UITableViewCell行的字符串高度不一致,那么怎样才能全部显示字符串?(高度自适应demo下载)

  • 方法:

- (CGRect)boundingRectWithSize:(CGSize)size options:(NSStringDrawingOptions)options attributes:(nullable NSDictionary *)attributes context:(nullable NSStringDrawingContext *)context NS_AVAILABLE(10_11, 7_0);

  • 需要传入字符串str ,宽度w, 最大高度MAXFLOAT ,字体font大小,得到rect
    高度自适应.gif
  • 代码:
#pragma mark- UITableViewDatasourece
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
    return self.tableSource.count;
}
- (UITableViewCell*)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString* identifier = @"customCell";
    static BOOL isRegister = NO;
    if (!isRegister) {
        UINib* cellNib = [UINib nibWithNibName:@"GCZCell" bundle:nil];
        [tableView registerNib:cellNib forCellReuseIdentifier:identifier];
        isRegister = YES;
    }
    
    GCZCell* cell = [tableView dequeueReusableCellWithIdentifier:identifier];
    // 表格内容的设置
    GCZModel* model = self.tableSource[indexPath.row];
    cell.iconView.image = [UIImage imageNamed:@"36_8.jpg"];
    cell.titleLabel.text = model.likeCount;
    
    // 先计算出要加载的字符串按照177宽,字体大小为17排版需要的rect
    //  w == 177 ; h = 998\MAXFLOAT(无限大)
   
    CGRect rect = [model.comment boundingRectWithSize:CGSizeMake(177, 998) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName: [UIFont systemFontOfSize:17]} context:nil];
    
    CGRect labelFrame = cell.contenLabel.frame;
    
    //w == 177 h=?
    NSInteger h = rect.size.height+10;
    NSLog(@"\nh = %d\n-----------------------",h );
    // 根据要显示内容排版的高度,重新设置label的高度
    CGRect newFrame = CGRectMake(labelFrame.origin.x, labelFrame.origin.y, 177, rect.size.height+10);
    [cell.contenLabel setFrame:newFrame];
    
    [cell.contenLabel setLineBreakMode:NSLineBreakByCharWrapping];
    cell.contenLabel.numberOfLines = 0;
    // 设置label的内容
    cell.contenLabel.text = model.comment;
    
    
    return cell;
}

你可能感兴趣的:(iOS开发列表行cell高度自适应方法?)