• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

ios - 移出屏幕后动态高度 UILabel 工作

[复制链接]
菜鸟教程小白 发表于 2022-12-12 12:17:58 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在尝试在 UITableViewCells 中创建多行动态 UILabel。我有一个带有“评论”标签的自定义 UITableViewCell。单元格和标签在 Storyboard 中创建。

我可以根据要存储在 UILabel 中的多行数据正确计算 UITableViewCells 的高度(使用 heightForRowAtIndexPath)。但是,我的问题在于实际的 UILabel 内容。 UILabel 内容将在表加载时仅显示 1 行数据。但是,一旦包含多行 UILabel 数据的单元格移出屏幕并重新出现在屏幕上,多行数据就会正确显示在具有多行的 UILabel 中。有没有办法解决这个问题,以便多行数据在表加载时正确显示?

- (void)tableViewUITableView *)tableView willDisplayCellUITableViewCell *)cell forRowAtIndexPathNSIndexPath *)indexPath
{
    CustomCell *cCell = (CustomCell *)cell;
    MyObject = [myArray objectAtIndex:indexPath.row];

    cCell.commentLabel.frame = CGRectMake(65.0f, 28.0f, 243.0f, 200.0f);
    cCell.commentLabel.text = MyObject.multi_line_text_data;
    cCell.commentLabel.adjustsFontSizeToFitWidth = NO;
    cCell.commentLabel.autoresizingMask = UIViewAutoresizingFlexibleWidth;
    cCell.commentLabel.font = [UIFont systemFontOfSize:13.0];
    cCell.commentLabel.lineBreakMode = NSLineBreakByWordWrapping;
    cCell.commentLabel.numberOfLines = 0;
    [cCell.commentLabel sizeToFit];

}

谢谢!



Best Answer-推荐答案


由于您在 Storyboard 中执行此操作,因此您可以在那里设置必要的标签属性(lineBreakMode 和行数)。只需给标签一个特定的宽度约束和单元格顶部、底部和左侧的约束。然后,在代码中使用 sizeWithFont:constrainedToSize:lineBreakMode: in heightForRowAtIndexPath: 根据标签的内容计算单元格的适当高度——由于其约束,标签将与单元格一起扩展到适当的大小。像这样的:

-(CGFloat)tableViewUITableView *)tableView heightForRowAtIndexPathNSIndexPath *)indexPath {
    CGSize rowSize = [self.theData[indexPath.row] sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:CGSizeMake(260, CGFLOAT_MAX) lineBreakMode:NSLineBreakByWordWrapping];
    return rowSize.height + 30;
}

这里,260 是我在 IB 中给标签的宽度,而 30 是用于说明标签上方和下方的填充的软糖因子(根据经验确定)。

关于ios - 移出屏幕后动态高度 UILabel 工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17517244/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap