APP<疯狂食材>开发总结

来源:互联网 发布:平安知鸟app下载ipad 编辑:程序博客网 时间:2024/05/06 22:32

<疯狂食材>

一、疯狂食材是我学iOS以来第一个app,虽然功能不算难,但在整个开发过程中也有很多细节要处理,期间也遇到了挺多小问题,在解决问题的同时也学到了挺多,对iOS开发的认识也提高了。

二、在整个开发周期都是遵循MVC模式和面向对象思想,下面讲下开发的具体细节。

三、开发细节:
1、app开发难免需要用到第三方插件,所以用cocoapods来管理。这里写图片描述
在这里我只用了AFNetworking(网络请求),SDWebImage(图片下载),libWeChatSDK(微信分享)。
2、项目目录:
这里写图片描述
2.1、主视图控制器(Main/Controller),UITabBarController,TabBar则是自己通过代码自定义View来代替。
1):定义两个图片数组,分别是选中状态和非选中状态的图片,通过功能按钮点击来切换图片,这里不涉及变化图标。

2):通过for循环加载5个功能按钮,按钮上在加iamgeView,图标大小20x20pix。并给按钮tag赋值(值最好从0开始,方便TabBarConntroller切换视图),在按钮点击事件中通过tag来判断点击那个按钮,并调用代理方法,回传selectedIndex值。

3):按钮布局完,在定义label作为选中按钮的状态下划线,点击按钮时,通过在UIView的动画中改变label的frame,来达到状态线向左向右滑动的效果。

2.2、类别(Category/)
1、设计思路:
1)、类别是软件默认打开的功能模块;首先加载UIActivityIndicatorView俗称“菊花器”等待网络数据异步请求,当异步请求完成时停止“菊花器”。最后根据网络请求回来的数据开始界面布局。
2、网络请求:
1)、网络请求采用第三方工具AFNetWorking。异步请求过程中通过block回调处理请求成功和请求失败。
2)、当网络请求失败,则弹出对话框,提示检查网络,并在view中添加临时按钮,点击按钮可以重新请求网络数据。并把临时按钮从视图控制器中移除。
3、界面布局:
1)、网络请求回来的json数据通过自定义处理后保存到可变数组dataSource中,然后在
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath;
方法中,根据indexPath的section对应dataSource数据源,返回相对应的cell行高。
2)、防止cell的重用机制出现。在UITableView注册中,运用for循环指定不一样的forCellReuseIdentifier。
在取cell中通过indexPath取其对应注册的cell。
3)、自定义cell,在自定义cell中采用XIB跟代码混合。绝大数cell是代码写的。代码写的cell就是将控件add到cell中。但在UITabelView上下滑动过程中,cell会重新add,导致label控件显示的文字会不断的加深。为了解决这种情况通过可变字典来解决,但凡第一次add后,改变对应的字典key。如果key改变了下次就不add控件。

2.3、功效(Efficacy/)
2.4、人群(Crowd/)
2.5、营养(Nutrition/)

 设计跟实现与2.2大体一致。

2.6、更多(More/)
1)、清除缓存:
这里的缓存主要是第三方插件SDWebImage的缓存图片。

//通过这个方法可以得到缓存图片的大小,单位是M。[[SDImageCache sharedImageCache] getSize]/1024.0/1024.0;[[SDImageCache sharedImageCache] clearDisk];//通过这两个方法清除SDWebImage缓存图片。[[SDImageCache sharedImageCache] clearMemory];

2.7、搜索的3D球模型(Search and Share/)
1)导入第三方类库:
这里写图片描述
2)、给球体上所有的按钮不同的背景颜色:

+(UIColor *) randomColor{CGFloat hue = ( arc4random() % 255 / 255.0 ); //0.0 to 1.0CGFloat saturation = ( arc4random() % 127 / 255.0 ) + 0.5; CGFloat brightness = ( arc4random() % 127 / 255.0 ) + 0.5; return [UIColor colorWithHue:hue saturation:saturation brightness:brightness alpha:1];}

3)、根据第三方3D球型Demo使用。

2.8、微信分享:
1)、在需要分享的页面(Category/CIItemsInfoViewController)点击按钮进行分享,普通申请微信应用只有分享到朋友圈和微信好友的权限。
这里写图片描述
2)、调用:
这里写图片描述

3)、获取当前屏幕的截图:
这里写图片描述

四、软件运行截图:
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述
这里写图片描述

0 0