项目要求一个月时间完成第一版,所有用了非常多的第三方库,现在列举一下。
基本上都能在 github 上面找到,或者使用
找到,就不列举网址了。
Third
设置属性 Label
TTTAttributedLabel
极光推送 (其它人用)
APService
短信验证码
CCPRestSDK
ios-charts
图表库,用作股票 k线图,分时图(后期因为收费去除了),庄家历史操作图
Podfile
source 'https://github.com/CocoaPods/Specs.git'
最底版支持7.0,好像最后改成 8.0了
platform :ios, '7.0'
网络库
pod "AFNetworking", "~> 2.0"
数据库 (未使用)
pod 'FMDB', '~> 2.5'
分离 Storyboard
pod 'RBStoryboardLink', '~> 0.1.4'
刷新库
pod 'MJRefresh', '~> 2.2.0'
侧边栏抽屉菜单(未使用,由REFrostedViewController替换)
pod 'RESideMenu', '~> 4.0.7'
提示框
pod 'MBProgressHUD', '~> 0.9.1'
引导画面
pod 'Onboard', '2.1.5'
自动更新
pod 'iVersion', '~> 1.11.4'
侧边栏抽屉菜单
pod 'REFrostedViewController', '~> 2.4.8'
扩展库(未使用)
pod 'MJExtension', '~> 2.4.0'
日志转换(未使用)
pod 'DateTools', '~> 1.6.1'
函数响应库 实现注册登录功能
pod 'ReactiveCocoa', '2.5'
日志库
pod 'CocoaLumberjack', '~> 2.0.1'
手工 Autolayout (其他人用)
pod 'Masonry', '~> 0.6.2'
输入管理
pod 'IQKeyboardManager', '~> 3.2.4'
替代 UIAlertView (其他人用)
pod 'SIAlertView', '~> 1.3'
另一个 提示库 (其他人用)
pod 'SVProgressHUD', '~> 1.1.3'
应用内测
pod 'FIR.im', '~> 1.2.0'
统计 (其它人用)
pod 'UMengAnalytics-NO-IDFA', '~> 3.5.9'
自定义 AlertView (未使用)
pod 'CustomIOSAlertView', '~> 0.9.3'
Block 库 (未使用)
#pod 'BlocksKit', '~> 2.2.5'
提示库 (未使用)
pod 'SDCAlertView', '~> 2.4.1'
分段选择 类似 Android, 在顶部实现 Tabbar 效果
pod 'THSegmentedPager', '~> 1.1.0'
自己实现的广告条,项目中用 SDWebImage 加载网络图片
pod 'YWBannerView', '~> 1.0.0'
调试使用,可观察 手机上面 UIView 尺寸
pod 'MMPlaceHolder', '~> 1.8'
瀑布流 (后期不用了)
pod 'CHTCollectionViewWaterfallLayout', '~> 0.9.1'
提示用户先登录
pod 'KLCPopup', '~> 1.0'
缓存图片
pod 'SDWebImage', '~> 3.7.3'
主页三个卡片滑动,替换 UICollectionView
pod 'iCarousel', '~> 1.8.1'
数据存储 (其他人用)
pod 'NanoStore', '~> 2.7.7'
显示 TextField 提示信息
pod 'JVFloatLabeledTextField', '~> 1.1.0'
实时推送右上角图标
pod 'RKNotificationHub', '~> 2.0.1'
带分享的 WebView
pod 'SVWebViewController', '~> 1.0'
二级 TableViewCell
pod 'RATreeView', '~> 1.0.3'
状态栏提示 无网络时使用
pod 'JDStatusBarNotification', '~> 1.5.2'
TableViewCell 自适应高度 (比较麻烦,后期改 iOS 8, 就不使用了)
pod 'UITableView+FDTemplateLayoutCell', '~> 1.3'
开发过程
7月5号编码开始,8月10号第一版完成,花了一个月零几天。
一开始是两个人做,我测试了网络连接,做好应用架构后让另一个哥们做网络请求,后期作数据缓存。
其它我处理,7月5号新建项目,上传到 Bitbucket 免费仓库。用 iOS 最佳实践 上面的方式,分了
Models, Views, Controllers, Stores, Helpers几个组,又添加了Constants, Third, ViewModel。
- 常量使用
// Constants.m NSString * const kUserHasOnboardedKey = @"user_has_onboarded";
最先把引导画面,左侧菜单,注册,登录完成,又把最右边的 Tabbar 信息完成。
股票图最开始使用的是原生组件 CoreGraphics,为了和 Android 一样(Android 用的MPAndroidChart, 比iOS早一个多月开发)。
在 github 上面找到 ios-charts,一些东西需要定制,比如颜色,要改源码。第一版完成,坐标轴也没有改成和 Android 一致,主要是没有时间了。
有比较多的模型数据,我找到一个可以把 JSON 数据转换成 Objective-c 的 Xcode 插件 ESJsonFormat.
可以直接输入到 文件 ,再添加进 XCode 就可以了。记得把映射 id。
一开始没有设计图,说先按照 Android 的做,而 Android 还要改版。7月20几号了 iPhone 6 设计图终于出来了,没有标记尺寸。
幸好有 Pixel Winch,当时是免费使用的,可以取尺寸。然后又按照设计图改,花时间啊。
网络层测试,参照 WWDC 2014 上的视频,那个是 swift 版的,后来找到objc.io上面的 测试异步代码。
[[DataCenter SharedInstance] GetBannerWithCallBack:^(id data, NSError *error) {
[expectation fulfill];
XCTAssertNil(error, @"error should be nil");
XCTAssertNotNil(data, @"data should not be nil");
NSDictionary *dictData = (NSDictionary *)data;
XCTAssertNil(error, @"dictData should be Dictionary");
id resultData = dictData[@"data"];
XCTAssertNotEqual([NSNull null], resultData, @"resultData should not be nil");
NSLog(@"Success : %s-%@", __func__, data);
}];
// 10s 超时
[self waitForExpectationsWithTimeout:10 handler:^(NSError *error) {
NSLog(@"%s-%@", __func__, error);
}];
}
最后新招进一个专职的,处理业务逻辑。
8月10号,星期天,第一版本要出来,加班,处理股票池的排序等其它事情。
总结
一定要把主界面先做出来,主要功能先处理,而不要挑两侧菜单上不太重要的提示,动态,简介之类的先处理。
另一点是一定不能等后台数据。当时显示 k 线图是数据是错误的,怎么改都不对,一两天过去,也没有什么进展。
要么模拟数据,不太熟悉数据,要么就先做其它的吧。
最后,能见面沟通还是见面沟通吧。