基本上都能在 github 上面找到,或者使用

$ pod search xxx

找到,就不列举网址了。

Third

设置属性 Label

TTTAttributedLabel

极光推送

APService

短信验证码

CCPRestSDK

ios-charts

图表库,用作股票 k线图,分时图, 庄家历史操作图

Podfile


source ‘https://github.com/CocoaPods/Specs.git’

最低版支持7.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 自适应高度

pod ‘UITableView+FDTemplateLayoutCell’, ‘~> 1.3’

开发过程


Models, Views, Controllers, Stores, Helpers几个组,又添加了Constants, Third, ViewModel。

  • 常量使用
// Constants.h
FOUNDATION_EXPORT NSString * const kUserHasOnboardedKey;

// Constants.m
NSString * const kUserHasOnboardedKey = @"user_has_onboarded";

有比较多的模型数据,有一个可以把 JSON 数据转换成 Objective-c 的 Xcode 插件 ESJsonFormat.

可以直接输入到 文件 ,再添加进 XCode 就可以了。记得把映射 id。

+ (NSDictionary *)replacedKeyFromPropertyName {
    return @{@"ID": @"id"};
}

网络层测试,参照 WWDC 2014 上的视频,那个是 swift 版的,后来找到objc.io上面的 测试异步代码。

// 获取新闻
- (void)testGetBanner {
    XCTestExpectation *expectation = [self expectationWithDescription:@"GetBanner called"];
    
    [[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);
    }];
}