一.引言
从今天开始,在我的博客上开辟工作项目专栏,来总结记录项目中的开发难点。第一篇记录的是电子书模块。
二.项目需求
一级界面:1.侧滑菜单、2.书籍列表、3.上拉加载
二级界面:1.头部书籍信息、2.书籍简介、3.评价列表、4.评价功能(弹出评价界面)5.底部下载/阅读功能
下载管理界面:1.下载的书籍信息、2.可侧滑删除
阅读界面:1.电子书自适应大小(pdf文件)、2.翻页 、3.记录页
三.总结(后台拿到的测试数据)
1.一级界面
0.0
1.pid为1的为父类,sn进行排序的标志,pid不为1的为子类
*遇到难点:把对应的子类按顺序放到对应的父类下
*解决方法:
NSMutableArray *allArrM = [NSMutableArray array];
NSMutableArray *childArrM = [NSMutableArray array];
for (BookMenuEntity *menu in result) {
/**
* pid为1的是父类
*/
if ([menu.pid isEqual:@1]) {
[allArrM addObject:menu];
}
else
[childArrM addObject:menu];
}
/**
*所有父类+排序
*/
NSSortDescriptor *allSn = [[NSSortDescriptor alloc] initWithKey:@"sn" ascending:YES];
NSArray *newAllResult= [allArrM sortedArrayUsingDescriptors:@[allSn]];
/**
*所有子类+排序
*/
NSSortDescriptor *childSn = [[NSSortDescriptor alloc] initWithKey:@"sn" ascending:YES];
NSArray *childResult= [childArrM sortedArrayUsingDescriptors:@[childSn]];
/*
对应父类有几个,这个可变数组救添加几个数组
*/
NSMutableArray *newChildResult = [NSMutableArray array];
for (int i =0; i<newAllResult.count; i++) {
NSMutableArray *tempArrM = [[NSMutableArray alloc] init];
[newChildResult addObject:tempArrM];
}
int i = 0;
for (BookMenuEntity *allEntity in newAllResult) {
/*
子类pid找到对应父类id,对应上就加到对应的数组(相当于加到对应的父类)
*/
for (BookMenuEntity *childEntity in childResult) {
if ([childEntity.pid isEqual:allEntity.ID]) {
[newChildResult[i] addObject:childEntity];
}
}
i++;
}
self.allMenuArrM = (NSMutableArray *)newAllResult;
self.childMenuArrM = newChildResult;
[self loadMenuData];
1.1
1.1.1
因为要让菜单栏弹出时书籍列表(UICollectionViewController)不可操作,所以加了背景遮罩。
backView = [[UIView alloc] initWithFrame:CGRectMake(0, HEADER, self.view.frame.size.width, self.view.frame.size.height)];
backView.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.3];
//加到标签栏上
[self.tabBarController.view addSubview:backView];
//单击手势ÿ