先来看下效果:

公司在做一个报修工单的功能,其中主要功能点在于,这个功能不完全是静态显示的, 它还可以点击回复,在下面增加评论,可以点击查看评论详情,也可以收回评论详情, 评论可以带图片,也可以不带图片,工单内容可以带图片,也可以不带图片。 并且回复内容的条数也不确定,就是因为这样的不确定性,一定程度增加了开发的难度。
根据MVC的思想,最初Cell应该自带一个数据模型dataModel,单现在我们多增加一个Frame模型, frame模型里面包含了各个子控件的frame值,并且自带数据模型dataModel属性, 我们就是在设置dataModel的时候 给frame计算每一个cell的高度
首先我们要准备数据模型,有了数据模型,才能计算文字的大小,才能得到Frame模型
以下是数据模型的代码:
#import <Foundation/Foundation.h>
@interface RepairOrderModel : NSObject
@property (nonatomic,strong) NSString * repair_id;
@property (nonatomic,strong) NSString * faddress;
@property (nonatomic,strong) NSArray * comment_imag_list;
@property (nonatomic,strong) NSString * fservicecontent;
@property (nonatomic,strong) NSString * frealname;
@property (nonatomic,strong) NSString * fordernum;
@property (nonatomic,strong) NSString * power_do;
@property (nonatomic,strong) NSString * fusername;
@property (nonatomic,strong) NSString * fcreatetime;
@property (nonatomic,strong) NSString * fstatus;
@property (nonatomic,strong) NSArray * reply_list;
@property (nonatomic,strong) NSArray * repairs_imag_list;
@property (nonatomic,strong) NSString * comment_score;
@property (nonatomic,strong) NSString * normal_do;
@property (nonatomic,strong) NSString * comment_content;
@property (nonatomic,strong) NSString * fremindercount; // 加急状态
-(instancetype)initWithDict:(NSDictionary *)dict;
+(instancetype)repairModelWithDict:(NSDictionary *)dict;
@end
先来看看Frame模型的代码:
在.h文件里:
#import <Foundation/Foundation.h>
#import "RepairViewFrame.h" // 回复评论列表的区域frame
@class RepairOrderModel;
@interface RepairOrderFrame : NSObject
/** 是否展开回复 默认是NO*/
@property (nonatomic,assign) BOOL isOpenReply;
/**
* 头像的frame ,结构体用assin
*/
@property (nonatomic, assign, readonly) CGRect iconF;
/**
* 业主名的frame
*/
@property (nonatomic, assign, readonly) CGRect nameF;
/**
* 订单时间的frame
*/
@property (nonatomic, assign, readonly) CGRect timeF;
/**
* 订单内容的frame
*/
@property (nonatomic, assign, readonly) CGRect desF;
/**
* 业主地址的frame
*/
@property (nonatomic, assign, readonly) CGRect addF;
/**
* 订单号码的frame
*/
@property (nonatomic, assign, readonly) CGRect orderNumF;
/**
* 加急状态的frame
*/
@property (nonatomic, assign, readonly) CGRect urgentF;
/**
* 配图1的frame
*/
@property (nonatomic, assign, readonly) CGRect image1ListF;
/**
* 配图2的frame
*/
@property (nonatomic, assign, readonly) CGRect image2ListF;
/**
* 配图3的frame
*/
@property (nonatomic, assign, readonly) CGRect image3ListF;
/**
* 派单按钮的frame
*/
@property (nonatomic, assign, readonly) CGRect sendOrdersBtnF;
/**
* 派单状态的frame
*/
@property (nonatomic, assign, readonly) CGRect sendStateF;
/**
* 接受按钮的frame
*/
@property (nonatomic, assign, readonly) CGRect acceptBtnF;
/**
* 评论按钮的frame
*/
@property (nonatomic, assign, readonly) CGRect commandBtnF;
/**
* 评论数量的frame
*/
@property (nonatomic, assign, readonly) CGRect countLabelF;
/**
* 详情按钮的frame
*/
@property (nonatomic, assign, readonly) CGRect detailBtnF;
/**
* 回复区域的frame
*/
@property (nonatomic, assign, readonly) CGRect commandViewF;
/**
* 回复区域内部的frame模型数组 装RepairViewFrame 模型
*/
@property (nonatomic,strong) NSMutableArray * repairViewFrameArr;
//@property (nonatomic, assign, readonly) RepairViewFrame * commandFrameModel;
/**
* cell的高度
*/
@property (nonatomic, assign, readonly) CGFloat cellHeight;
@property (nonatomic, strong) RepairOrderModel *model; //只有拿到模型数据才能算这些属性的frame,readonly:在这个模型里面的frame属性别人不能乱改,只能访问
@end










