iOS UI设计: 在Autolayout自适应的情况下tableviewcell高度自适应
来源:互联网 发布:sql server guid 编辑:程序博客网 时间:2024/06/06 01:02
经常查阅资料和自己的研究,现在有一个较为高效的方法。
首先前提条件
1. Cell 用xib方式自定义。 内嵌有 icon头像 labelview多行文本框
2. 导致高度变化的就是这个多行文本框,需要手动判断高度。
方法: 1 . Cell 采取xib绘图的方式,把其余不变控件约束好, 重点把labelview的上下 top和bottom 对 cell的contentview做好约束,这样为了保证高度计算后自动拉伸多行。
2. 代码编写
首先是设置多行参数
titleLabel.numberOfLines = 0;
本文适用于已经掌握基本的自定义cell的同学。我也是做个笔记。重点在自适应高度。在Cell自定义初始化后。
3.
@property (nonatomic, strong) NSMutableDictionary *indexToHeight;为了提高效率 不用每次都计算高度这里用字典存起来
- (void)viewDidLoad { [super viewDidLoad]; self.tableView.dataSource = self; self.tableView.delegate = self; self.indexToHeight = [[NSMutableDictionary alloc] init];}
下面最重要的一步。
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { if ([self.indexToHeight objectForKey:[NSNumber numberWithInteger:indexPath.row]] == nil) { float offset = 84; CMessage *mes = self.mesList[indexPath.row]; UIScreen *screen = [UIScreen mainScreen]; float mesHeight = [self fontWidth:mes.text fontSize:16 width:screen.bounds.size.width - 86]; [self.indexToHeight setObject:[NSNumber numberWithInteger:offset + mesHeight] forKey:[NSString stringWithFormat:@"%ld",indexPath.row]]; } NSNumber *num = [self.indexToHeight objectForKey:[NSString stringWithFormat:@"%ld",indexPath.row]]; return num.intValue;}- (CGFloat)fontWidth:(NSString *)src fontSize:(float)size width:(float)width { return [src boundingRectWithSize:CGSizeMake(width, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:size]} context:nil].size.height;}
上面是两个函数。第一个函数是delegate的协议。 第二个是我写的需要用的函数。
其中第二个函数可以重复使用,功能就是返回一个字符串在指定宽度下的实际高度。(包括多行的时候),然后再通过这个高度设置cell的高度
第一个函数就是传回一个自定义的高度值。 先if判断是否此行计算过高度。然后再调入字符串数据,这里是我自己的列子,里面的实际数值是我的约束,为了简单我直接写的数字。大概意思就是计算好高度后,存到字典里,下次调用就直接取字典就行了。
下面是效果图:
0 0
- iOS UI设计: 在Autolayout自适应的情况下tableviewcell高度自适应
- [iOS] TableViewCell 自适应高度
- 自适应tableViewCell的高度
- TableViewCell高度的自适应
- iOS之如何自适应TableViewCell的高度
- iOS之如何自适应TableViewCell的高度
- iOS tableviewcell 高度自适应方法
- 在宽度确定的情况下高度自适应
- IOS-根据TableviewCell 总体高度 做自适应
- IOS TableViewCell嵌套webview 自适应高度
- iOS开发之tableViewCell高度自适应
- tableViewCell 自适应高度
- tableViewcell高度自适应
- tableViewcell高度自适应
- TableViewCell自适应高度
- tableViewCell自适应高度
- TableviewCell高度自适应
- IOS研究成果——在autolayout 如何实现 Cell 的高度自适应
- Dialog和Popupwindow的区别
- 将一棵二叉树的所有结点存储在一维数组中,虚结点用#表示,利用性质5
- 基本选择器
- tipsforjade
- 子查询(一)创建表
- iOS UI设计: 在Autolayout自适应的情况下tableviewcell高度自适应
- Linux常用命令大全
- Lie群、Lie代数
- 赶在今天过去之前
- iOS NSNotificationCenter的简单使用
- Android 工具集
- leetcode笔记:House Robber II
- 四,主要菜单界面的创建
- Codeforces Round #328 (Div. 2) C. The Big Race