前言
手工课是利用业余时间完成的一个项目,这个项目适合刚刚接触 iOS 开发的新手用来练手,首先,这个开源项目中用到了许多优秀的开源框架,感谢开源,好了,废话不多说.让我们先来看一下这个项目中涉及到的知识点:
- 利用 UICollectionView 实现常见界面的搭建,以及自定义布局
- 转场动画的实现
- 利用 FMDB 实现数据储存
- 简单动画的实现
- 利用 Block实现封装一个常用的控件
- 如何封装一个常用的控制器
- 如何更好的使用三方类库,比如(AFN…)
我本来就是菜鸟,(看我名字就可以看出来了),希望各大神在代码结构给予指导…….,最后说一句,开源万岁
效果预览
新版本.gif
首页-精选.gif
首页-精选-直播.gif
教程01.gif
市集.gif
手工圈.gif
首页-达人.gif
首页-关注.gif
首页-活动01.gif
我的.gif
教程02.gif
首页-活动02.gif
首页-精选-02.gif
代码结构
代码结构我比较喜欢按照业务来区分,大概就是这样子了
新版本特性
思路和实现都比较简单,需要注意的一点是将判断是否有新版本的逻辑提取出来,直接上代码
AppDelegate
1 2 3 4 5 6 7 8 9 |
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds]; self.window.rootViewController = [GPGuideTool chooseRootViewController]; [self configApper]; [self.window makeKeyAndVisible]; return YES; } |
判断逻辑
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
// 加载哪个控制器 + (UIViewController *)chooseRootViewController { UIViewController *rootVc = nil; NSDictionary *dict = [NSBundle mainBundle].infoDictionary; // 获取最新的版本号 NSString *curVersion = dict[@"CFBundleShortVersionString"]; // 获取上一次的版本号 NSString *lastVersion = [GPUserDefaults objectForKey:GPVersionKey]; // 之前的最新的版本号 lastVersion if ([curVersion isEqualToString:lastVersion]) { // 版本号相等 rootVc = [[GPAdViewController alloc]init]; }else{ // 有最新的版本号 // 保存到偏好设置 [[NSUserDefaults standardUserDefaults] setObject:curVersion forKey:GPVersionKey]; rootVc = [[GPNewFeatureController alloc]init]; } return rootVc; } |