IOS开发QQ空间/朋友圈类界面的搭建

2020-01-18 18:14:05王振洲

先来看下效果:
ios,朋友圈实现,微信朋友圈实现

公司在做一个报修工单的功能,其中主要功能点在于,这个功能不完全是静态显示的, 它还可以点击回复,在下面增加评论,可以点击查看评论详情,也可以收回评论详情, 评论可以带图片,也可以不带图片,工单内容可以带图片,也可以不带图片。 并且回复内容的条数也不确定,就是因为这样的不确定性,一定程度增加了开发的难度。

根据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