iOS开发动态计算cell的高度

在iOS开发过程中,我们经常会用到UITableView, 谈到UITableView当然少不了UITableViewCell.那么有时候我们就会有疑惑,怎么样才能让cell的高度根据文字的大小多少,以及照片的高度来动态设计呢?

下面我们来看一下,到底怎么做才能让cell的高度动态变化,让界面看起来更美观协调一些呢?

  1. //动态设置cell的高度
  2. + (CGFloat)heightForRowWithModel:(PhotoInfo *)photoInfo
  3. {
  4. //1.图片的高度
  5. //让图片等比例缩放
  6. //(1)获取图片
  7. UIImage *image = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:@"ZZ" ofType:@"png"]];
  8. CGFloat imageHeight = [self heightForImage:image];
  9. //2.文本的高度
  10. CGFloat textHeight = [self heightForText:photoInfo.introduction];
  11. //3.返回cell 的总高度
  12. return kPhotoCell_TitleLabel_Height + imageHeight + textHeight + 4 * kPhotoCell_MarginBetween;
  13. }
  14. //单独计算图片的高度
  15. + (CGFloat)heightForImage:(UIImage *)image
  16. {
  17. //(2)获取图片的大小
  18. CGSize size = image.size;
  19. //(3)求出缩放比例
  20. CGFloat scale = kPhotoCell_Width / size.width;
  21. CGFloat imageHeight = size.height * scale;
  22. return imageHeight;
  23. }
  24. //单独计算文本的高度
  25. + (CGFloat)heightForText:(NSString *)text
  26. {
  27. //设置计算文本时字体的大小,以什么标准来计算
  28. NSDictionary *attrbute = @{NSFontAttributeName:[UIFont systemFontOfSize:kFontSize]};
  29. return [text boundingRectWithSize:CGSizeMake(kPhotoCell_Width, 1000) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:attrbute context:nil].size.height;
  30. }

代码中k开头的都是宏定义的数值。

时间: 2024-10-11 04:49:21

iOS开发动态计算cell的高度的相关文章

iOS开发总结-UITableView 自定义cell和动态计算cell的高度

UITableView cell自定义头文件: shopCell.h #import <UIKit/UIKit.h> @interface shopCell : UITableViewCell @property (strong, nonatomic)  UIImageView *image;@property (strong, nonatomic)  UILabel *name;@property (strong, nonatomic)  UILabel *itemshop;@propert

IOS之xib计算cell的高度

1.之前是纯代码计算cell的高度,现在就是在cell里面成创建好了控件的位置,然后需要计算cell的内容的高度,图片的类型是一样的计算方法.先看看cell的布局情况:如图所示: 计算的高度的方式:头像的高度+内容的高度 +(有如图片就加上图片的高度,没有就不加了)= cell高度 这里就是要计算content的高度了,其他的都写死了直接加上就行了,关键就是计算cell如图计算: Demo下载:http://pan.baidu.com/s/1hspqwp2

iOS两行代码实现动态缓存 cell 的高度

在我们的日常开发中要经常动态缓存 cell 的高度,每当这个时候我们都要手动去根据文字内容计算高度,显得啰嗦又麻烦,这里我利用 xib 来快速的实现这个效果 第一步 利用 xib 来创建我们自定义的 cell. 自定义 cell 的布局 如上图,是我自定义的 cell 布局,从图中可以看出我们要想动态缓存 cell 的高度唯一要解决的就是动态计算标红 label 的高度就 OK 了. 第二步 设置 Label 的属性, Label 换行属性 给 Label 添加约束 选中我们的正文 Label

iOS不得姐项目--精华模块上拉下拉的注意事项,日期显示,重构子控制器,计算cell的高度(只计算一次),图片帖子的显示

一.上拉下拉注意事项 使用MJRefresh中的上拉控件自动设置透明 当请求下页数据通过page的时候,注意的是上拉加载更多数据失败的问题,下拉加载数据失败了,页数应该还原.或者是请求成功的时候再将页数修改 二.帖子中的日期显示问题(操作日期的两个类的使用) 期望达到的效果:如图 <1>NSDate -- 需要通过NSDateFormatter(日期格式类)将日期转换成相同的格式,才能相互运算,计算出来的时间间隔是以秒数来呈现的. <2>NSCalendar(日历类) -- 通过当

在AutoLyout中动态获得cell的高度 和 autoLyout中的小随笔

autoLyout中动态获得cell的高度和autoLyout小总结 一.在autoLyout中通过动态的方式来获取cell 的方式呢? 1.       在布局时候要有对于cell中contentView的bottom,top都有一定的约束.通过Storyboard中才有了计算第一步. 2.       在Storyboard中布局好后,给UITableView的estimatedRowHeight属性指定一个预设行高.(例:self.tableView.estimatedRowHeight

IOS7中动态计算UILable的高度

.h文件 #import <UIKit/UIKit.h> @interface UILabel (ContentSize) - (CGSize)contentSize; @end .m文件 #import "UILabel+ContentSize.h" @implementation UILabel (ContentSize) - (CGSize)contentSize { NSMutableParagraphStyle * paragraphStyle = [[NSMut

动态改变cell的高度&amp;beginUpdates和endUpdates-实现UITableView的动画块

1.利用reloadRowsAtIndexPaths:withRowAnimation:来动态改变cell的高度 UITableView的- (void)reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation 这一方法会重新加载所指定indexPaths中的UITableViewCell实例,因为重新加载cell所以会请求这个UITableView实例的dat

UITableView使用AutoLayout动态计算cell高度

UITableView几乎是每个app都需要用的控件,而cell高度自适应也是我们 需要掌握的,当然cell上面的控件也是有多种表现形式,今天小编讲解的是其中一种比较常见的:Auto Layout with UILabel in UITableViewCell. 话不多说,上教程. 首先我们创建一个Sigle View Application的项目,然后拖上一个UITableView到storyboard中,设置好代理并且设置好约束.约束这里就不做讲解了,可以到AutoLayout详解了 解一下

用Model来计算cell的高度

效果: 将计算cell高度的方法直接移植到Model当中,初始化的瞬间就计算好了高度,非常好用! 源码: Model // // Model.h // // Copyright (c) 2014年 Y.X. All rights reserved. // #import <Foundation/Foundation.h> #import <UIKit/UIKit.h> @interface Model : NSObject @property (nonatomic, strong)