iOS UITableViewCell高度自适应Label高度

热门标签

,

特别声明:文章多为网络转载,资源使用一般不提供任何帮助,特殊资源除外,如有侵权请联系!

一般在开发的时候,写的Cell, 一般不会是绝对等高的,宽就不说了,一般就那么宽
高度随着cell里面内容的变化而变化的情况是常有的事
作为一枚菜鸟,我就知道两种方法可以让cell自适应高,先说一种不用自动布局的
1.自适应cell高(手动版)
核心方法:这个方法只能在iOS7之后使用,之前的方法很麻烦,就不说了(说白了就是根据字体大小计算你要填进去的字符串的size,前提是label的行数设置为0,也就是无限行)

- (CGSize)getTextHeightWithString:(NSString *)string{
   CGRect rect = [string boundingRectWithSize:CGSizeMake(200, MAXFLOAT) options:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName:[UIFont systemFontOfSize:15]} context:nil];
    return  rect.size;
}

这里的几个参数:
1.就是放在一个多大的容器里(虚拟的容器,不然他怎么知道啥时候换行,当然也就不知道宽度),

这里基本就跟你的label一样宽,或者小一点,自己拿捏,宽度当然是不限,也可以填0

2.一系列参数,这里一般就用这俩,可以点进去看一下(好吧,其实我也不懂)

3.字符串属性,这里不赘述。可以调颜色字体大小。

4.没用过,直接nil

得到一个CGSize,就是这段字符串在刚才自己设置那个虚拟容器里的长宽,

如果不满一行,当然返回的宽就是字符串的宽,而不是你设置的虚拟框的宽,这个真的很方便(之前不满一行还得另外算)

如果只是需要高度,不妨直接返回rect.size.height 这样,直接拿到的高度就可以填到设置行高的代理方法里了

如果cell里有图片的话,在设置行高方法里加上图片高度就ok

2.利用autolayout

创建cell的自定义子类,加入xib,或者直接storyboard加入自定义cell

然后做约束,最重要的约束就是不要限制死cell里label的高,约束label的下边界和cell的下边界的距离

然后,就是在代码中添加两句话

//自动适应高(前提是做了自动布局的约束 )

tableView.estimatedRowHeight = tableView.rowheight //提供一个预估的高度值(这里其实填多少都行,一般就你的xib里cell多高,这个就填多高)

tableView.rowheight = UiTableViewAutomaticDimension

这个是直接设置tableView所有的cell,如果您另有所求,可以调用代理方法里设置预估高度和高度的方法
运行程序,当当当当,完成,如此简单。

好了,该说这个的缺点了,当你的cell中有不能确定高度的图片时。。。。疯掉了,这约束怎么做。

没办法,只能在代码里的代理方法里用高度加了(也可以做约束,可以实现,但是效果不好,很多图片无法很好适应,所以不推荐)

 

未经允许不得转载:作者:SheaYang, 转载或复制请以 超链接形式 并注明出处 技术Dog|博客
原文地址:《iOS UITableViewCell高度自适应Label高度》 发布于2019-11-10

分享到:
赞(0) 打赏

评论 抢沙发

7 + 2 =


iOS UITableViewCell高度自适应Label高度

长按图片转发给朋友

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

Vieu4.0主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。

登录

忘记密码 ?