xib中tableviewcell rowheight的高度自适应
全栈老韩
全栈工程师,擅长iOS App开发、前端(vue、react、nuxt、小程序&Taro)开发、Flutter、React Native、后端(midwayjs、golang、express、koa)开发、docker容器、seo优化等。
用xib实现高度自适应所应该具有的条件:
-
每一个cell中,内容文字显示有多有少,使得每一个cell的高度不能完全一致;
-
自定义的cell的xib中,控件的布局从左到右,从上到下进行布局;
-
xib中最靠近cell Content的控件,要设置相对于content的bottom约束。
-
内容文字控件UILabel的xib需要设置lineNumber = 0; 并且Preferred width 要勾选Explicit。

-
需要在对应的控制器中,设置
UITableView,
self.tableView.rowHeight = UITableViewAutomaticDimension;
self.tableView.estimatedRowHeight = 365;
- 需要在对应控制器,设置一个cell的实例demoHeightCell的全局cell类实例,
// demo height cell
CYCourseDetailTableViewCell *demoHeightCell;
然后通过nib的loadNib方式实例化
demoHeightCell = [[[NSBundle mainBundle] loadNibNamed:@"CYCourseDetailTableViewCell" owner:nil options:nil] firstObject];
然后如下:
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath{
[demoHeightCell valueWithModel:courseArr[indexPath.row]];
CGSize demoSize = [demoHeightCell.contentView systemLayoutSizeFittingSize:UILayoutFittingCompressedSize];
return demoSize.height;
}
返回计算后的高度,即为理想宽度。
发布于2024-01-30 04:54:08
浏览量45·
暂无评论,快来发表第一条评论吧