Commit 5cb34116def6c5fe9491573044a954b5fcd59755

Authored by yinqiaojuan
1 parent 98bc06be

0.1.0

Showing 61 changed files with 1339 additions and 1620 deletions

Too many changes to show.

To preserve performance only 61 of 197 files are displayed.

CNLiveDisease.podspec
1 1
2 Pod::Spec.new do |s| 2 Pod::Spec.new do |s|
3 s.name = 'CNLiveDisease' 3 s.name = 'CNLiveDisease'
4 - s.version = '0.0.9' 4 + s.version = '0.1.0'
5 s.summary = '智慧农业部分组件化' 5 s.summary = '智慧农业部分组件化'
6 6
7 s.description = <<-DESC 7 s.description = <<-DESC
@@ -17,7 +17,7 @@ TODO: Add long description of the pod here. @@ -17,7 +17,7 @@ TODO: Add long description of the pod here.
17 17
18 s.ios.deployment_target = '9.0' 18 s.ios.deployment_target = '9.0'
19 19
20 - s.source_files = 'CNLiveDisease/Classes/**/*' 20 + #s.source_files = 'CNLiveDisease/Classes/**/*'
21 21
22 s.resource_bundles = { 22 s.resource_bundles = {
23 'CNLiveDisease' => ['CNLiveDisease/Assets/Assets.xcassets'] 23 'CNLiveDisease' => ['CNLiveDisease/Assets/Assets.xcassets']
@@ -25,14 +25,23 @@ TODO: Add long description of the pod here. @@ -25,14 +25,23 @@ TODO: Add long description of the pod here.
25 25
26 # s.public_header_files = 'Pod/Classes/**/*.h' 26 # s.public_header_files = 'Pod/Classes/**/*.h'
27 s.frameworks = 'UIKit', 'Foundation' 27 s.frameworks = 'UIKit', 'Foundation'
28 - s.dependency 'CNLiveBaseKit'  
29 - s.dependency 'Masonry'  
30 - s.dependency 'QMUIKit', '~> 3.1.0'  
31 - s.dependency 'CNLiveCommonCategory'  
32 - s.dependency 'CNLiveImagePickerController'  
33 - s.dependency 'CNLiveAVCamera'  
34 - # s.dependency 'CNLiveUploadManager'  
35 - # s.ios.vendored_library = 'CNLiveUploadManager'  
36 - s.dependency 'FLAnimatedImage'  
37 - s.dependency 'CNLiveCoreMediator' 28 + s.subspec 'View' do |view|
  29 + view.dependency 'CNLiveTripartiteManagement/QMUIKit'
  30 + view.dependency 'CNLiveBaseKit'
  31 + view.source_files = 'CNLiveDisease/Classes/View/*.{h,m}'
  32 + end
  33 + s.subspec 'Controller' do |controller|
  34 + controller.dependency 'CNLiveBaseKit'
  35 + controller.dependency 'CNLiveTripartiteManagement/QMUIKit'
  36 + controller.dependency 'CNLiveTripartiteManagement/Masonry'
  37 + controller.dependency 'CNLiveCommonCategory'
  38 + controller.dependency 'CNLiveImagePickerController'
  39 + controller.dependency 'CNLiveTripartiteManagement/FLAnimatedImage'
  40 + controller.dependency 'CNLiveAVCamera'
  41 + controller.dependency 'CNLiveCommonClass'
  42 + controller.dependency 'CNLiveRequestBastKit'
  43 + controller.dependency 'CNLiveDisease/View'
  44 + controller.dependency 'CNLiveCoreMediator_ModuleDiseaseAction'
  45 + controller.source_files = 'CNLiveDisease/Classes/Controller/*.{h,m}'
  46 + end
38 end 47 end
CNLiveDisease/Classes/Controller/CNLiveDiseaseController.h
@@ -5,11 +5,10 @@ @@ -5,11 +5,10 @@
5 // Created by 殷巧娟 on 2019/1/23. 5 // Created by 殷巧娟 on 2019/1/23.
6 // 6 //
7 7
8 -#import <UIKit/UIKit.h>  
9 - 8 +#import "CNCommonViewController.h"
10 NS_ASSUME_NONNULL_BEGIN 9 NS_ASSUME_NONNULL_BEGIN
11 10
12 -@interface CNLiveDiseaseController : UIViewController 11 +@interface CNLiveDiseaseController : CNCommonViewController
13 @end 12 @end
14 13
15 NS_ASSUME_NONNULL_END 14 NS_ASSUME_NONNULL_END
CNLiveDisease/Classes/Controller/CNLiveDiseaseController.m
@@ -7,36 +7,30 @@ @@ -7,36 +7,30 @@
7 7
8 #import "CNLiveDiseaseController.h" 8 #import "CNLiveDiseaseController.h"
9 #import "CNLiveDiseaseSegment.h" 9 #import "CNLiveDiseaseSegment.h"
10 -#import <CNLiveCommonCategory/UIColor+CNLiveExtension.h>  
11 -#import <CNLiveBaseKit/CNLiveBaseKit.h> 10 +#import "UIColor+CNLiveExtension.h"
  11 +#import "CNLiveBaseKit.h"
12 #import "CNLiveFriutViewController.h" 12 #import "CNLiveFriutViewController.h"
  13 +#import "UIColor+CNLiveExtension.h"
13 #define TotalTitleCount 3 14 #define TotalTitleCount 3
14 #define Segment_Height 53 15 #define Segment_Height 53
15 @interface CNLiveDiseaseController ()<UIScrollViewDelegate,CNLiveDiseaseSegmentDelegate> 16 @interface CNLiveDiseaseController ()<UIScrollViewDelegate,CNLiveDiseaseSegmentDelegate>
16 @property (nonatomic, strong) UIScrollView *scrollView; 17 @property (nonatomic, strong) UIScrollView *scrollView;
17 @property (nonatomic, strong) CNLiveDiseaseSegment *segmentView; 18 @property (nonatomic, strong) CNLiveDiseaseSegment *segmentView;
18 -@property (nonatomic, assign) BOOL isAppReview;  
19 @end 19 @end
20 20
21 @implementation CNLiveDiseaseController 21 @implementation CNLiveDiseaseController
22 22
23 - (void)viewDidLoad { 23 - (void)viewDidLoad {
24 [super viewDidLoad]; 24 [super viewDidLoad];
25 - self.view.backgroundColor = [UIColor whiteColor]; 25 + self.title = @"农业智能";
26 [self setUpSegment]; 26 [self setUpSegment];
27 [self.view addSubview:self.scrollView]; 27 [self.view addSubview:self.scrollView];
28 CGFloat width = KScreenWidth; 28 CGFloat width = KScreenWidth;
29 CGFloat height = KScreenHeight - kNavigationBarHeight - Segment_Height; 29 CGFloat height = KScreenHeight - kNavigationBarHeight - Segment_Height;
30 CNLiveFriutViewController *vc = [[CNLiveFriutViewController alloc]init]; 30 CNLiveFriutViewController *vc = [[CNLiveFriutViewController alloc]init];
31 [vc setIndex:0]; 31 [vc setIndex:0];
32 - self.isAppReview = YES;  
33 - if (self.isAppReview) {  
34 - vc.imageArray = [NSArray arrayWithObjects:@"pingguo",@"yingtao",@"putao",@"tao",@"xing",@"caomei",@"yangmei",@"lizhi",@"xigua",@"mugua",@"mangguo",@"hamigua",@"xiangjiao",@"zao",@"mihoutao",@"li", nil];  
35 - vc.titleArray = [NSArray arrayWithObjects:@"苹果",@"樱桃",@"葡萄",@"桃子",@"杏子",@"草莓",@"杨梅",@"荔枝",@"西瓜",@"木瓜",@"芒果",@"哈密瓜",@"香蕉",@"枣",@"猕猴桃",@"梨", nil];  
36 - }else {  
37 - vc.imageArray = [NSArray arrayWithObjects:@"pingguo",@"yingtao",@"putao",@"tao",@"xing",@"zao",@"mihoutao",@"li",nil];  
38 - vc.titleArray = [NSArray arrayWithObjects:@"苹果",@"樱桃",@"葡萄",@"桃子",@"杏子",@"枣",@"猕猴桃",@"梨",nil];  
39 - } 32 + vc.imageArray = [NSArray arrayWithObjects:@"pingguo",@"yingtao",@"putao",@"tao",@"xing",@"zao",@"mihoutao",@"li",nil];
  33 + vc.titleArray = [NSArray arrayWithObjects:@"苹果",@"樱桃",@"葡萄",@"桃子",@"杏子",@"枣",@"猕猴桃",@"梨",nil];
40 [self addChildViewController:vc]; 34 [self addChildViewController:vc];
41 vc.view.frame = CGRectMake(0, 0, width, height); 35 vc.view.frame = CGRectMake(0, 0, width, height);
42 [self.scrollView addSubview:vc.view]; 36 [self.scrollView addSubview:vc.view];
@@ -55,19 +49,19 @@ @@ -55,19 +49,19 @@
55 vegetableVc.view.frame = CGRectMake(width *2, 0, width, height); 49 vegetableVc.view.frame = CGRectMake(width *2, 0, width, height);
56 [self.scrollView addSubview:vegetableVc.view]; 50 [self.scrollView addSubview:vegetableVc.view];
57 } 51 }
58 -- (void)setUpSegment { 52 +-(void)setUpSegment {
59 self.segmentView = [[CNLiveDiseaseSegment alloc]initWithFrame:CGRectMake(0, kNavigationBarHeight, KScreenWidth, Segment_Height)]; 53 self.segmentView = [[CNLiveDiseaseSegment alloc]initWithFrame:CGRectMake(0, kNavigationBarHeight, KScreenWidth, Segment_Height)];
60 self.segmentView.delegate = self; 54 self.segmentView.delegate = self;
61 self.segmentView.dataArr = [NSArray arrayWithObjects:@"水果",@"大田作物",@"食材", nil]; 55 self.segmentView.dataArr = [NSArray arrayWithObjects:@"水果",@"大田作物",@"食材", nil];
62 - self.segmentView.tagTextColor_normal = [UIColor colorWithHexString:@"#5C5C5C"];  
63 - self.segmentView.tagTextColor_selected = [UIColor colorWithHexString:@"#333333"]; 56 + self.segmentView.tagTextColor_normal = CNLiveColorWithHexString(@"5C5C5C");
  57 + self.segmentView.tagTextColor_selected = CNLiveColorWithHexString(@"333333");
64 self.segmentView.tagTextFont_normal = 15; 58 self.segmentView.tagTextFont_normal = 15;
65 self.segmentView.tagTextFont_selected = 18; 59 self.segmentView.tagTextFont_selected = 18;
66 - self.segmentView.sliderColor = [UIColor colorWithHexString:@"#23D41E"]; 60 + self.segmentView.sliderColor = CNLiveColorWithHexString(@"23D41E");
  61 + self.segmentView.sliderW = 60;
67 self.segmentView.sliderH = 1; 62 self.segmentView.sliderH = 1;
68 [self.view addSubview:self.segmentView]; 63 [self.view addSubview:self.segmentView];
69 } 64 }
70 -  
71 -(UIScrollView *)scrollView { 65 -(UIScrollView *)scrollView {
72 if (!_scrollView) { 66 if (!_scrollView) {
73 _scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, kNavigationBarHeight + Segment_Height, KScreenWidth, KScreenHeight - kNavigationBarHeight - Segment_Height)]; 67 _scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, kNavigationBarHeight + Segment_Height, KScreenWidth, KScreenHeight - kNavigationBarHeight - Segment_Height)];
@@ -78,8 +72,6 @@ @@ -78,8 +72,6 @@
78 _scrollView.bounces = NO; 72 _scrollView.bounces = NO;
79 _scrollView.delegate = self; 73 _scrollView.delegate = self;
80 _scrollView.scrollEnabled = YES; 74 _scrollView.scrollEnabled = YES;
81 - _scrollView.backgroundColor = [UIColor whiteColor];  
82 - // _scrollView.backgroundColor = [UIColor cyanColor];  
83 } 75 }
84 return _scrollView; 76 return _scrollView;
85 } 77 }
@@ -96,5 +88,4 @@ @@ -96,5 +88,4 @@
96 [self.segmentView selectingOneTagWithIndex:selectedIndx]; 88 [self.segmentView selectingOneTagWithIndex:selectedIndx];
97 } 89 }
98 90
99 -  
100 @end 91 @end
CNLiveDisease/Classes/Controller/CNLiveDiseaseDescController.h
@@ -5,11 +5,11 @@ @@ -5,11 +5,11 @@
5 // Created by 殷巧娟 on 2019/1/25. 5 // Created by 殷巧娟 on 2019/1/25.
6 // 6 //
7 7
8 -#import <QMUIKit/QMUIKit.h> 8 +#import "CNCommonViewController.h"
9 9
10 NS_ASSUME_NONNULL_BEGIN 10 NS_ASSUME_NONNULL_BEGIN
11 11
12 -@interface CNLiveDiseaseDescController : QMUICommonViewController 12 +@interface CNLiveDiseaseDescController : CNCommonViewController
13 13
14 @property (strong, nonatomic) NSDictionary * dataDict; 14 @property (strong, nonatomic) NSDictionary * dataDict;
15 @end 15 @end
CNLiveDisease/Classes/Controller/CNLiveDiseaseDescController.m
@@ -7,9 +7,10 @@ @@ -7,9 +7,10 @@
7 7
8 #import "CNLiveDiseaseDescController.h" 8 #import "CNLiveDiseaseDescController.h"
9 #import <WebKit/WebKit.h> 9 #import <WebKit/WebKit.h>
10 -#import <FLAnimatedImage/FLAnimatedImageView.h>  
11 -#import <CNLiveBaseKit/CNLiveBaseKit.h>  
12 -#import <CNLiveCommonCategory/CNLiveCommonCategory.h> 10 +#import "CNLiveCommonCategory.h"
  11 +#import "CNLiveBaseKit.h"
  12 +#import "FLAnimatedImageView.h"
  13 +#import "QMUIKit.h"
13 #define MJWeakSelf __weak typeof(self) weakSelf = self; 14 #define MJWeakSelf __weak typeof(self) weakSelf = self;
14 @interface CNLiveDiseaseDescController ()<WKNavigationDelegate,WKUIDelegate> 15 @interface CNLiveDiseaseDescController ()<WKNavigationDelegate,WKUIDelegate>
15 { 16 {
CNLiveDisease/Classes/Controller/CNLiveDiseaseFailedController.h
@@ -5,11 +5,11 @@ @@ -5,11 +5,11 @@
5 // Created by 殷巧娟 on 2019/1/25. 5 // Created by 殷巧娟 on 2019/1/25.
6 // 6 //
7 7
8 -#import <QMUIKit/QMUIKit.h> 8 +#import "CNCommonViewController.h"
9 9
10 NS_ASSUME_NONNULL_BEGIN 10 NS_ASSUME_NONNULL_BEGIN
11 11
12 -@interface CNLiveDiseaseFailedController : QMUICommonViewController 12 +@interface CNLiveDiseaseFailedController : CNCommonViewController
13 @property (nonatomic, copy) NSString *name; 13 @property (nonatomic, copy) NSString *name;
14 @property (nonatomic, copy) NSString *introduction; 14 @property (nonatomic, copy) NSString *introduction;
15 @end 15 @end
CNLiveDisease/Classes/Controller/CNLiveFriutViewController.h
@@ -5,15 +5,15 @@ @@ -5,15 +5,15 @@
5 // Created by 殷巧娟 on 2019/1/24. 5 // Created by 殷巧娟 on 2019/1/24.
6 // 6 //
7 7
8 -#import <QMUIKit/QMUIKit.h> 8 +#import "CNCommonViewController.h"
9 9
10 NS_ASSUME_NONNULL_BEGIN 10 NS_ASSUME_NONNULL_BEGIN
11 11
12 -@interface CNLiveFriutViewController : QMUICommonViewController 12 +@interface CNLiveFriutViewController : CNCommonViewController
13 -(void)setIndex:(NSInteger)index; 13 -(void)setIndex:(NSInteger)index;
14 @property (nonatomic, strong) NSArray *imageArray; 14 @property (nonatomic, strong) NSArray *imageArray;
15 @property (nonatomic, strong) NSArray *titleArray; 15 @property (nonatomic, strong) NSArray *titleArray;
16 -@property (nonatomic, assign) BOOL isAppReview; //这个应该从appdelegate那里传过来 16 +
17 @end 17 @end
18 18
19 NS_ASSUME_NONNULL_END 19 NS_ASSUME_NONNULL_END
CNLiveDisease/Classes/Controller/CNLiveFriutViewController.m
@@ -8,8 +8,8 @@ @@ -8,8 +8,8 @@
8 #import "CNLiveFriutViewController.h" 8 #import "CNLiveFriutViewController.h"
9 #import "CNDiseaseViewCell.h" 9 #import "CNDiseaseViewCell.h"
10 #import "CNDiseaseType.h" 10 #import "CNDiseaseType.h"
11 -#import <CNLiveBaseKit/CNLiveBaseKit.h>  
12 -#import <QMUIKit/QMUIKit.h> 11 +#import "CNLiveBaseKit.h"
  12 +#import "QMUIKit.h"
13 #import "CNLiveSelectedViewController.h" 13 #import "CNLiveSelectedViewController.h"
14 #import "CNLiveGetImage.h" 14 #import "CNLiveGetImage.h"
15 static NSString *cellID = @"Cell"; 15 static NSString *cellID = @"Cell";
@@ -25,22 +25,12 @@ static NSString *cellID = @&quot;Cell&quot;; @@ -25,22 +25,12 @@ static NSString *cellID = @&quot;Cell&quot;;
25 } 25 }
26 26
27 -(void)setIndex:(NSInteger)index { 27 -(void)setIndex:(NSInteger)index {
28 -  
29 - self.isAppReview = YES;  
30 if (index == 0) { 28 if (index == 0) {
31 [self setUpCollectionView]; 29 [self setUpCollectionView];
32 }else if (index == 1) { 30 }else if (index == 1) {
33 - if (self.isAppReview) {  
34 - [self setUpCollectionView];  
35 - }else {  
36 - [self addEmptyView];  
37 - } 31 + [self addEmptyView];
38 }else if (index == 2) { 32 }else if (index == 2) {
39 - if (self.isAppReview) {  
40 - [self setUpCollectionView];  
41 - }else {  
42 - [self addEmptyView];  
43 - } 33 + [self addEmptyView];
44 } 34 }
45 } 35 }
46 36
@@ -80,10 +70,10 @@ static NSString *cellID = @&quot;Cell&quot;; @@ -80,10 +70,10 @@ static NSString *cellID = @&quot;Cell&quot;;
80 if (cell ==nil) { 70 if (cell ==nil) {
81 cell = [[CNDiseaseViewCell alloc]init]; 71 cell = [[CNDiseaseViewCell alloc]init];
82 } 72 }
83 -// cell.backgroundColor = [UIColor cyanColor];  
84 // cell.showImageV.image = [UIImage imageNamed:self.imageArray[indexPath.row]]; 73 // cell.showImageV.image = [UIImage imageNamed:self.imageArray[indexPath.row]];
85 - cell.showImageV.image = [CNLiveGetImage getImageName:self.imageArray[indexPath.row]];  
86 - NSLog(@"打印这个图片%@",self.imageArray); 74 +// UIImage *image = [CNLiveGetImage cnRefresh_getImageName:self.imageArray[indexPath.row] bundle:@"CNLiveDisease.bundle/CNLiveDisease" targetClass:[self class]];
  75 + UIImage *image = [CNLiveGetImage getImageName:self.imageArray[indexPath.row]];
  76 + cell.showImageV.image = image;
87 cell.titleLabel.text = self.titleArray[indexPath.row]; 77 cell.titleLabel.text = self.titleArray[indexPath.row];
88 return cell; 78 return cell;
89 } 79 }
@@ -99,8 +89,8 @@ static NSString *cellID = @&quot;Cell&quot;; @@ -99,8 +89,8 @@ static NSString *cellID = @&quot;Cell&quot;;
99 89
100 selectVc.titleName = self.titleArray[indexPath.row]; 90 selectVc.titleName = self.titleArray[indexPath.row];
101 selectVc.imageName = self.imageArray[indexPath.row]; 91 selectVc.imageName = self.imageArray[indexPath.row];
102 - [self presentViewController:selectVc animated:YES completion:nil];  
103 -// [self.navigationController pushViewController:selectVc animated:YES]; 92 +// [self presentViewController:selectVc animated:YES completion:nil];
  93 + [self.navigationController pushViewController:selectVc animated:YES];
104 } 94 }
105 95
106 -(void)setCNNoDataEmptyView { 96 -(void)setCNNoDataEmptyView {
CNLiveDisease/Classes/Controller/CNLiveSelectedViewController.h
@@ -5,11 +5,11 @@ @@ -5,11 +5,11 @@
5 // Created by 殷巧娟 on 2019/1/24. 5 // Created by 殷巧娟 on 2019/1/24.
6 // 6 //
7 7
8 -#import <QMUIKit/QMUIKit.h> 8 +#import "CNCommonViewController.h"
9 9
10 NS_ASSUME_NONNULL_BEGIN 10 NS_ASSUME_NONNULL_BEGIN
11 11
12 -@interface CNLiveSelectedViewController : QMUICommonViewController 12 +@interface CNLiveSelectedViewController : CNCommonViewController
13 @property (nonatomic, copy) NSString *imageName; 13 @property (nonatomic, copy) NSString *imageName;
14 @property (nonatomic, copy) NSString *titleName; 14 @property (nonatomic, copy) NSString *titleName;
15 @end 15 @end
CNLiveDisease/Classes/Controller/CNLiveSelectedViewController.m
@@ -8,15 +8,23 @@ @@ -8,15 +8,23 @@
8 #import "CNLiveSelectedViewController.h" 8 #import "CNLiveSelectedViewController.h"
9 #import <AssetsLibrary/AssetsLibrary.h> 9 #import <AssetsLibrary/AssetsLibrary.h>
10 #import <Photos/Photos.h> 10 #import <Photos/Photos.h>
11 -#import <CNLiveImagePickerController/TZImagePickerController.h> 11 +#import "TZImagePickerController.h"
12 #import "CNDiseaseType.h" 12 #import "CNDiseaseType.h"
13 -#import <CNLiveAVCamera/XFCameraController.h> 13 +#import "XFCameraController.h"
14 #import "CNDiseaseType.h" 14 #import "CNDiseaseType.h"
15 -#import <Masonry/Masonry.h>  
16 -#import <CNLiveBaseKit/CNLiveBaseKit.h>  
17 -#import <CNLiveImagePickerController/CNImagePickerManager.h> 15 +#import "Masonry.h"
  16 +#import "CNLiveBaseKit.h"
  17 +#import "CNImagePickerManager.h"
18 #import "CNLiveGetImage.h" 18 #import "CNLiveGetImage.h"
19 -#define MJWeakSelf __weak typeof(self) weakSelf = self; 19 +#import "CNLiveNetworking.h"
  20 +#import "UIImage+zipData.h"
  21 +#import <AFNetworking/AFNetworking.h>
  22 +#import "CNLiveDiseaseFailedController.h"
  23 +#import "CNLiveDiseaseDescController.h"
  24 +#import "UIView+CNAlertView.h"
  25 +#import <QMUIKit/QMUIKit.h>
  26 +#define MJWeakSelf __weak typeof(self) weakSelf = self
  27 +#define kFriendsCircle_limit_photo 20*1024.0*1024.0 //朋友圈限制图片20M
20 @interface CNLiveSelectedViewController () <TZImagePickerControllerDelegate> 28 @interface CNLiveSelectedViewController () <TZImagePickerControllerDelegate>
21 @property (nonatomic, strong) UIImageView *selectImageV; 29 @property (nonatomic, strong) UIImageView *selectImageV;
22 @property (nonatomic, strong) UIButton *photoBtn; 30 @property (nonatomic, strong) UIButton *photoBtn;
@@ -29,7 +37,8 @@ @@ -29,7 +37,8 @@
29 self.view.backgroundColor = [UIColor whiteColor]; 37 self.view.backgroundColor = [UIColor whiteColor];
30 [self setUPViews]; 38 [self setUPViews];
31 self.title = self.titleName; 39 self.title = self.titleName;
32 - self.selectImageV.image = [CNLiveGetImage getImageName:self.imageName];; 40 +// self.selectImageV.image = [CNLiveGetImage cnRefresh_getImageName:self.imageName bundle:@"CNLiveDisease.bundle/CNLiveDisease" targetClass:[self class]];
  41 + self.selectImageV.image = [CNLiveGetImage getImageName:self.imageName];
33 42
34 NSLog(@"打印这个页面走了吗"); 43 NSLog(@"打印这个页面走了吗");
35 } 44 }
@@ -45,7 +54,12 @@ @@ -45,7 +54,12 @@
45 [self.view createAlertViewTitleArray:@[@"拍照",@"从手机相册选择"] subTitleArr:@[@"",@""] textColor:UIColorMake(11, 190, 0) subTitleColor:[UIColor whiteColor] firstFont:UIFontMake(18.0f) font:UIFontMake(18.0f) subFont:UIFontMake(18.0f) cancelTitle:@"取消" cancelFont:UIFontMake(18.0f) cancelTitleColor:UIColorMake(102, 102, 102) actionBlock:^(UIButton *button, NSInteger didRow) { 54 [self.view createAlertViewTitleArray:@[@"拍照",@"从手机相册选择"] subTitleArr:@[@"",@""] textColor:UIColorMake(11, 190, 0) subTitleColor:[UIColor whiteColor] firstFont:UIFontMake(18.0f) font:UIFontMake(18.0f) subFont:UIFontMake(18.0f) cancelTitle:@"取消" cancelFont:UIFontMake(18.0f) cancelTitleColor:UIColorMake(102, 102, 102) actionBlock:^(UIButton *button, NSInteger didRow) {
46 switch (didRow) { 55 switch (didRow) {
47 case 0:{ 56 case 0:{
  57 +// if ([CNAudioOrVideoMananger IsEnter]) {//在房间
  58 +// [QMUITips showWithText:@"音视频通话中..." inView:AppKeyWindow hideAfterDelay:1.5];
  59 +// return;
  60 +// }
48 [weakSelf takeToXFPhoto]; 61 [weakSelf takeToXFPhoto];
  62 +
49 } 63 }
50 break; 64 break;
51 case 1:{ 65 case 1:{
@@ -57,20 +71,29 @@ @@ -57,20 +71,29 @@
57 } 71 }
58 }]; 72 }];
59 } 73 }
60 -  
61 #pragma mark - 跳转到自定义相机 74 #pragma mark - 跳转到自定义相机
62 -(void)takeToXFPhoto { 75 -(void)takeToXFPhoto {
63 XFCameraController *cameraController = [[XFCameraController alloc]init]; 76 XFCameraController *cameraController = [[XFCameraController alloc]init];
64 77
65 cameraController.isCanShootVideo = NO; 78 cameraController.isCanShootVideo = NO;
  79 + NSString *tempName = [NSString stringWithFormat:@"%@/",@"name"];
  80 + NSString *filePath = [NSTemporaryDirectory() stringByAppendingPathComponent:tempName];
  81 + NSFileManager *fileManager = [NSFileManager defaultManager];
  82 + BOOL isDir = NO;
  83 + // fileExistsAtPath 判断一个文件或目录是否有效,isDirectory判断是否一个目录
  84 + BOOL existed = [fileManager fileExistsAtPath:filePath isDirectory:&isDir];
  85 + if (!(isDir == YES && existed == YES)) {
  86 + // 在 temp 目录下创建一临时文件
  87 + [fileManager createDirectoryAtPath:filePath withIntermediateDirectories:YES attributes:nil error:nil];
  88 + }
  89 + cameraController.outPutPath = filePath;
66 __weak XFCameraController *weakCameraController = cameraController; 90 __weak XFCameraController *weakCameraController = cameraController;
67 cameraController.takePhotosCompletionBlock = ^(UIImage *image, NSError *error) { 91 cameraController.takePhotosCompletionBlock = ^(UIImage *image, NSError *error) {
68 if (!error) { 92 if (!error) {
69 [self didFinishSelectPhotoWithImage:image]; 93 [self didFinishSelectPhotoWithImage:image];
70 } 94 }
71 -  
72 dispatch_async(dispatch_get_main_queue(), ^{ 95 dispatch_async(dispatch_get_main_queue(), ^{
73 - [weakCameraController dismissViewControllerAnimated:YES completion:nil]; 96 + [weakCameraController dismissViewControllerAnimated:YES completion:nil];
74 }); 97 });
75 }; 98 };
76 [self presentViewController:cameraController animated:YES completion:nil]; 99 [self presentViewController:cameraController animated:YES completion:nil];
@@ -98,7 +121,7 @@ @@ -98,7 +121,7 @@
98 assetModel = [models lastObject]; 121 assetModel = [models lastObject];
99 } 122 }
100 dispatch_async(dispatch_get_main_queue(), ^{ 123 dispatch_async(dispatch_get_main_queue(), ^{
101 - self.selectImageV.image = image; 124 + self.selectImageV.image = image;
102 }); 125 });
103 [self getUpFieldList:image]; 126 [self getUpFieldList:image];
104 127
@@ -108,65 +131,113 @@ @@ -108,65 +131,113 @@
108 }]; 131 }];
109 } 132 }
110 #pragma maek -从相册选择 133 #pragma maek -从相册选择
111 --(void)pushTZImagePickerController {  
112 - [CNImagePickerManager ImagePickerWithMaxImagesCount:1 columnNumber:4 delegate:self pushPhotoPickerVc:YES isSelectOriginalPhoto:YES selectedAssets:nil enterType:CNImagePickerEnterTypeOther pickingPhotosHandle:^(NSArray<UIImage *> *photos, NSArray *assets, BOOL isSelectOriginalPhoto) { 134 +- (void)pushTZImagePickerController {
  135 + __weak typeof(self)weakSelf = self;
  136 + TZImagePickerController *picker = [[TZImagePickerController alloc]initWithMaxImagesCount:1 delegate:self];
  137 + picker.allowPickingVideo = NO;
  138 + picker.allowPreview = NO;
  139 + picker.allowPickingGif = NO;
  140 + picker.allowTakePicture = NO;
  141 + [picker setDidFinishPickingPhotosHandle:^(NSArray<UIImage *> *photos, NSArray *assets, BOOL isSelectOriginalPhoto) {
113 dispatch_async(dispatch_get_main_queue(), ^{ 142 dispatch_async(dispatch_get_main_queue(), ^{
114 - self.selectImageV.image = [photos firstObject]; 143 + weakSelf.selectImageV.image = [photos firstObject];
115 }); 144 });
116 -  
117 -// [self getUpFieldList:[photos firstObject]];  
118 -  
119 - 145 + [weakSelf
  146 + getUpFieldList:[photos firstObject]];
120 }]; 147 }];
  148 + [self presentViewController:picker animated:YES completion:nil];
121 } 149 }
122 150
123 -(void)getUpFieldList:(UIImage *)image { 151 -(void)getUpFieldList:(UIImage *)image {
124 152
125 -// NSString *url = @"https://xcx.aiphsn.com/recognition.php";  
126 -// [QMUITips showLoading:@"正在识别中" inView:AppKeyWindow];  
127 -//  
128 -// NSDictionary *param = @{@"type":[CNDiseaseType showType:self.titleName]};  
129 -// [CNLiveUploadManager uploadRequestType:CNLiveUploadTypeThird url:url dic:param image:image isOriginal:NO limitType:(AppPhototLimitType)AppPhototLimitTypeFriendsCircle progress:^(float progress) {  
130 -//  
131 -// } success:^(CNLiveUploadModel *uploadModel) {  
132 -// NSLog(@"f打印啊啊啊啊啊%@",uploadModel.responseObject);  
133 -// [QMUITips hideAllTipsInView:AppKeyWindow];  
134 -// NSDictionary *dic = [uploadModel.responseObject objectForKey:@"disease"];  
135 -// if ([[dic objectForKey:@"name"] isEqualToString:@"抱歉图片不能识别"]) {  
136 -// CNDiseaseFailedController *failVc = [[CNDiseaseFailedController alloc]init];  
137 -// failVc.name = [dic objectForKey:@"name"];  
138 -// failVc.introduction = [dic objectForKey:@"introduction"];  
139 -// dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{  
140 -// [[AppDelegate sharedAppDelegate]pushViewController:failVc withBackTitle:@""];  
141 -// });  
142 -// }else {  
143 -// CNLiveDiseaseDescController * diseaseView = [[CNLiveDiseaseDescController alloc] init];  
144 -// diseaseView.dataDict = [uploadModel.responseObject objectForKey:@"disease"];  
145 -// [[AppDelegate sharedAppDelegate] pushViewController:diseaseView withBackTitle:@""];  
146 -// }  
147 -// } failure:^(CNLiveUploadModel *uploadModel, NSError *error) {  
148 -// NSLog(@"打印error%@",error);  
149 -// [QMUITips hideAllTipsInView:AppKeyWindow];  
150 -// if (error.code == -1009) {  
151 -// [QMUITips showError:@"似乎已断开与互联网的连接" inView:AppKeyWindow hideAfterDelay:1.5f];  
152 -// }else {  
153 -// [QMUITips showError:@"识别错误,请重新识别" inView:AppKeyWindow hideAfterDelay:1.5f];  
154 -// }  
155 -// }]; 153 + NSString *url = @"https://xcx.aiphsn.com/recognition.php";
  154 + [QMUITips showLoading:@"正在识别中" inView:self.view];
  155 +
  156 + NSDictionary *param = @{@"type":[CNDiseaseType showType:self.titleName]};
  157 + [CNLiveNetworking uploadNetworkWithURLString:url Param:param FormDataBlock:^(id<AFMultipartFormData> formData) {
  158 + /*
  159 + *该方法的参数
  160 + 1. appendPartWithFileData:要上传的照片[二进制流]
  161 + 2. name:对应网站上[upload.php中]处理文件的字段(比如upload)
  162 + 3. fileName:要保存在服务器上的文件名
  163 + 4. mimeType:上传的文件的类型
  164 + */
  165 + NSData *imageData = nil;
  166 + NSDate *date = [NSDate date];
  167 + NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
  168 + [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
  169 + NSString *strDate = [dateFormatter stringFromDate:date];
  170 + int randCount = rand();
  171 + NSString *fileName = [NSString stringWithFormat:@"Image%d_%@_%d",1,strDate,randCount];
  172 + NSString *name = @"";
  173 + name = @"file";//file
  174 + NSString *mineType = @"image/jpeg";
  175 + imageData = [UIImage zipNSDataWithImage:image];//非原图压缩;
  176 + if (!imageData) {
  177 + // NSError *returnError = [NSError errorWithDomain:@"压缩失败" code:105 userInfo:@{NSLocalizedDescriptionKey:@"压缩失败,请重新获取"}];
  178 + // !failure ? : failure(nil,returnError);
  179 + [QMUITips showError:@"压缩失败,请重新获取" inView:self.view hideAfterDelay:1.5f];
  180 + return;
  181 + }
  182 + // 筛选
  183 + if ( [self isImageLimitType:imageData]) {
  184 +
  185 + }else{
  186 + // NSError *error = [NSError errorWithDomain:@"数据过大" code:104 userInfo:@{NSLocalizedDescriptionKey:@"数据过大,请重新获取"}];
  187 + // !failure ? : failure(nil,error);
  188 + [QMUITips showError:@"数据过大,请重新获取" inView:self.view hideAfterDelay:1.5f];
  189 + return;
  190 +
  191 + }
  192 + [formData appendPartWithFileData:imageData name:name fileName:fileName mimeType:mineType];
  193 + } ProgressBlock:^(NSProgress *progress) {
  194 +
  195 + } CompletionBlock:^(NSURLSessionTask *requestTask, id responseObject, NSError *error) {
  196 + if (!error) {
  197 + [QMUITips hideAllTipsInView:self.view];
  198 + NSDictionary *dic = [responseObject objectForKey:@"disease"];
  199 + if ([[dic objectForKey:@"name"] isEqualToString:@"抱歉图片不能识别"]) {
  200 + CNLiveDiseaseFailedController *failVc = [[CNLiveDiseaseFailedController alloc]init];
  201 + failVc.name = [dic objectForKey:@"name"];
  202 + failVc.introduction = [dic objectForKey:@"introduction"];
  203 + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
  204 + // [[AppDelegate sharedAppDelegate]pushViewController:failVc withBackTitle:@""];
  205 + [self.navigationController pushViewController:failVc animated:YES];
  206 + });
  207 + }else {
  208 + CNLiveDiseaseDescController * diseaseView = [[CNLiveDiseaseDescController alloc] init];
  209 + diseaseView.dataDict = [responseObject objectForKey:@"disease"];
  210 + // [[AppDelegate sharedAppDelegate] pushViewController:diseaseView withBackTitle:@""];
  211 + [self.navigationController pushViewController:diseaseView animated:YES];
  212 + }
  213 + }else {
  214 + [QMUITips hideAllTipsInView:self.view];
  215 + if (error.code == -1009) {
  216 + [QMUITips showError:@"似乎已断开与互联网的连接" inView:self.view hideAfterDelay:1.5f];
  217 + }else {
  218 + [QMUITips showError:@"识别错误,请重新识别" inView:self.view hideAfterDelay:1.5f];
  219 + }
  220 + }
  221 + }];
  222 +
156 } 223 }
157 224
158 -  
159 - 225 +- (BOOL)isImageLimitType:(NSData *)data {
  226 + if (data.length <= kFriendsCircle_limit_photo) {
  227 + return YES;
  228 + }else{
  229 + return NO;
  230 + }
  231 +}
160 -(void)setUpLayout { 232 -(void)setUpLayout {
161 MJWeakSelf; 233 MJWeakSelf;
162 -  
163 [_backImageV mas_makeConstraints:^(MASConstraintMaker *make) { 234 [_backImageV mas_makeConstraints:^(MASConstraintMaker *make) {
164 make.top.left.right.bottom.mas_equalTo(self.view); 235 make.top.left.right.bottom.mas_equalTo(self.view);
165 }]; 236 }];
166 [_selectImageV mas_makeConstraints:^(MASConstraintMaker *make) { 237 [_selectImageV mas_makeConstraints:^(MASConstraintMaker *make) {
167 make.centerX.mas_equalTo(weakSelf.view.mas_centerX); 238 make.centerX.mas_equalTo(weakSelf.view.mas_centerX);
168 make.height.width.mas_equalTo(127); 239 make.height.width.mas_equalTo(127);
169 - make.top.mas_equalTo(kVerticalStatusHeight+ 44 +125); 240 + make.top.mas_equalTo(kNavigationBarHeight +125);
170 }]; 241 }];
171 [_photoBtn mas_makeConstraints:^(MASConstraintMaker *make) { 242 [_photoBtn mas_makeConstraints:^(MASConstraintMaker *make) {
172 make.top.mas_equalTo(weakSelf.selectImageV.mas_bottom).offset(30); 243 make.top.mas_equalTo(weakSelf.selectImageV.mas_bottom).offset(30);
@@ -175,38 +246,34 @@ @@ -175,38 +246,34 @@
175 make.height.mas_equalTo(40); 246 make.height.mas_equalTo(40);
176 }]; 247 }];
177 } 248 }
178 -  
179 --(UIImageView *)backImageV {  
180 -  
181 - if (!_backImageV) {  
182 - _backImageV = [[UIImageView alloc]init];  
183 -// _backImageV.image = [UIImage imageNamed:@"farming_bg"];  
184 - _backImageV.image = [CNLiveGetImage getImageName:[NSString stringWithFormat:@"farming_bg"]];  
185 - _backImageV.backgroundColor = [UIColor cyanColor];  
186 - _backImageV.contentMode = UIViewContentModeScaleAspectFill;  
187 - _backImageV.clipsToBounds = YES;  
188 - _backImageV.userInteractionEnabled = YES;  
189 - }  
190 - return _backImageV;  
191 -}  
192 -  
193 -(UIImageView *)selectImageV { 249 -(UIImageView *)selectImageV {
194 -  
195 if (!_selectImageV) { 250 if (!_selectImageV) {
196 _selectImageV = [[UIImageView alloc]init]; 251 _selectImageV = [[UIImageView alloc]init];
197 _selectImageV.contentMode = UIViewContentModeScaleAspectFill; 252 _selectImageV.contentMode = UIViewContentModeScaleAspectFill;
198 _selectImageV.clipsToBounds = YES; 253 _selectImageV.clipsToBounds = YES;
199 -// _selectImageV.backgroundColor = [UIColor cyanColor];  
200 } 254 }
201 return _selectImageV; 255 return _selectImageV;
202 } 256 }
203 -(UIButton *)photoBtn { 257 -(UIButton *)photoBtn {
204 if (!_photoBtn) { 258 if (!_photoBtn) {
205 _photoBtn = [UIButton buttonWithType:UIButtonTypeCustom]; 259 _photoBtn = [UIButton buttonWithType:UIButtonTypeCustom];
206 - // [_photoBtn setImage:[UIImage imageNamed:@"farming_release"] forState:UIControlStateNormal]; 260 +// [_photoBtn setImage:[UIImage imageNamed:@"farming_release"] forState:UIControlStateNormal];
207 [_photoBtn setImage:[CNLiveGetImage getImageName:[NSString stringWithFormat:@"farming_release"]] forState:UIControlStateNormal]; 261 [_photoBtn setImage:[CNLiveGetImage getImageName:[NSString stringWithFormat:@"farming_release"]] forState:UIControlStateNormal];
  262 +// [_photoBtn setTitle:@"从相册选择" forState:UIControlStateNormal];
208 [_photoBtn addTarget:self action:@selector(photoBtnClick) forControlEvents:UIControlEventTouchUpInside]; 263 [_photoBtn addTarget:self action:@selector(photoBtnClick) forControlEvents:UIControlEventTouchUpInside];
209 } 264 }
210 return _photoBtn; 265 return _photoBtn;
211 } 266 }
  267 +-(UIImageView *)backImageV {
  268 + if (!_backImageV) {
  269 + _backImageV = [[UIImageView alloc]init];
  270 +// _backImageV.image = [UIImage imageNamed:@"farming_bg"];
  271 + _backImageV.image = [CNLiveGetImage getImageName:[NSString stringWithFormat:@"farming_bg"]];
  272 + _backImageV.contentMode = UIViewContentModeScaleAspectFill;
  273 +// _backImageV.backgroundColor = [UIColor cyanColor];
  274 + _backImageV.clipsToBounds = YES;
  275 + _backImageV.userInteractionEnabled = YES;
  276 + }
  277 + return _backImageV;
  278 +}
212 @end 279 @end
CNLiveDisease/Classes/Actions/CNLiveTarget_A.h renamed to CNLiveDisease/Classes/Controller/CNLiveTarget_GetDisease.h
1 // 1 //
2 -// CNLiveTarget_A.h  
3 -// CNLiveDisease 2 +// CNLiveTarget_getDisease.h
  3 +// AFNetworking
4 // 4 //
5 -// Created by 殷巧娟 on 2019/1/25. 5 +// Created by 殷巧娟 on 2019/6/6.
6 // 6 //
7 7
8 #import <Foundation/Foundation.h> 8 #import <Foundation/Foundation.h>
9 #import "CNLiveDiseaseController.h" 9 #import "CNLiveDiseaseController.h"
10 NS_ASSUME_NONNULL_BEGIN 10 NS_ASSUME_NONNULL_BEGIN
11 11
12 -@interface CNLiveTarget_A : NSObject  
13 --(UIViewController *)CNLiveAction_ViewController:(NSDictionary *)params;  
14 -// 要在.h引用这个控制器,否则外面会找不到这个控制器 12 +@interface CNLiveTarget_GetDisease : NSObject
  13 +- (UIViewController *)CNLiveAction_getDiseaseConnectVc:(NSDictionary *)params;
15 @end 14 @end
16 15
17 NS_ASSUME_NONNULL_END 16 NS_ASSUME_NONNULL_END
CNLiveDisease/Classes/Actions/CNLiveTarget_A.m renamed to CNLiveDisease/Classes/Controller/CNLiveTarget_GetDisease.m
1 // 1 //
2 -// CNLiveTarget_A.m  
3 -// CNLiveDisease 2 +// CNLiveTarget_getDisease.m
  3 +// AFNetworking
4 // 4 //
5 -// Created by 殷巧娟 on 2019/1/25. 5 +// Created by 殷巧娟 on 2019/6/6.
6 // 6 //
7 7
8 -#import "CNLiveTarget_A.h"  
9 -  
10 -@implementation CNLiveTarget_A  
11 --(UIViewController *)CNLiveAction_ViewController:(NSDictionary *)params { 8 +#import "CNLiveTarget_GetDisease.h"
  9 +@implementation CNLiveTarget_GetDisease
  10 +- (UIViewController *)CNLiveAction_getDiseaseConnectVc:(NSDictionary *)params {
12 CNLiveDiseaseController *vc = [[CNLiveDiseaseController alloc]init]; 11 CNLiveDiseaseController *vc = [[CNLiveDiseaseController alloc]init];
13 return vc; 12 return vc;
14 } 13 }
CNLiveDisease/Classes/ModuleA/CNLiveCoreMediator+A.h deleted 100644 → 0
1 -//  
2 -// CNLiveCoreMediator+A.h  
3 -// CNLiveDisease  
4 -//  
5 -// Created by 殷巧娟 on 2019/1/25.  
6 -//  
7 -  
8 -#import <CNLiveCoreMediator/CNLiveCoreMediator.h>  
9 -  
10 -NS_ASSUME_NONNULL_BEGIN  
11 -  
12 -@interface CNLiveCoreMediator (A)  
13 -- (UIViewController *)A_ViewControllerWithParams:(NSDictionary *)params;  
14 -@end  
15 -  
16 -NS_ASSUME_NONNULL_END  
CNLiveDisease/Classes/ModuleA/CNLiveCoreMediator+A.m deleted 100644 → 0
1 -//  
2 -// CNLiveCoreMediator+A.m  
3 -// CNLiveDisease  
4 -//  
5 -// Created by 殷巧娟 on 2019/1/25.  
6 -//  
7 -  
8 -#import "CNLiveCoreMediator+A.h"  
9 -  
10 -@implementation CNLiveCoreMediator (A)  
11 --(UIViewController *)A_ViewControllerWithParams:(NSDictionary *)params {  
12 -// return [self performTarget:@"A" action:@"ViewController" params:params shouldCacheTarget:NO];  
13 - UIViewController *viewController = [self performTarget:@"A" action:@"ViewController" params:params shouldCacheTarget:NO];  
14 - if ([viewController isKindOfClass:[UIViewController class]]) {  
15 - // view controller 交付出去之后,可以由外界选择如何使用  
16 - return viewController;  
17 - }else  
18 - {  
19 - // 这里处理异常场景,具体如何处理取决于产品  
20 - return [[UIViewController alloc] init];  
21 - }  
22 -}  
23 -@end  
CNLiveDisease/Classes/View/CNDiseaseViewCell.m
@@ -7,10 +7,9 @@ @@ -7,10 +7,9 @@
7 // 7 //
8 8
9 #import "CNDiseaseViewCell.h" 9 #import "CNDiseaseViewCell.h"
10 -#import <Masonry/Masonry.h>  
11 -#import <CNLiveBaseKit/UIView+Extension.h> 10 +#import "Masonry.h"
  11 +#import "CNLiveDefinesHeader.h"
12 #define MJWeakSelf __weak typeof(self) weakSelf = self; 12 #define MJWeakSelf __weak typeof(self) weakSelf = self;
13 -#define RGBA(r,g,b,a) [UIColor colorWithRed:r/255.0f green:g/255.0f blue:b/255.0f alpha:a]  
14 @implementation CNDiseaseViewCell 13 @implementation CNDiseaseViewCell
15 -(instancetype)initWithFrame:(CGRect)frame { 14 -(instancetype)initWithFrame:(CGRect)frame {
16 self = [super initWithFrame:frame]; 15 self = [super initWithFrame:frame];
CNLiveDisease/Classes/View/CNLiveGetImage.m
@@ -14,8 +14,39 @@ @@ -14,8 +14,39 @@
14 NSURL *url = [bundle URLForResource:@"CNLiveDisease" withExtension:@"bundle"]; 14 NSURL *url = [bundle URLForResource:@"CNLiveDisease" withExtension:@"bundle"];
15 NSBundle *targetBundle = [NSBundle bundleWithURL:url]; 15 NSBundle *targetBundle = [NSBundle bundleWithURL:url];
16 UIImage *image = [UIImage imageNamed:imageName inBundle:targetBundle compatibleWithTraitCollection:nil]; 16 UIImage *image = [UIImage imageNamed:imageName inBundle:targetBundle compatibleWithTraitCollection:nil];
  17 +
17 return image; 18 return image;
18 19
19 } 20 }
  21 +///**
  22 +// * 创建图片
  23 +// *
  24 +// * @param imageName 图片名字
  25 +// * @param bundlePath 图片所在的bundle名字
  26 +// * @param targetClass 类和bundle的同级目录
  27 +// * @return 返回UIImage
  28 +// */
  29 +//+ (UIImage *)cnRefresh_getImageName:(NSString *)imageName bundle:(NSString *)bundlePath targetClass:(Class)targetClass{
  30 +// NSBundle *bundle = [NSBundle bundleForClass:targetClass];
  31 +// NSURL *url = [bundle URLForResource:bundlePath withExtension:@"bundle"];
  32 +// if (!url) {
  33 +// return [UIImage new];
  34 +// }
  35 +// NSBundle *targetBundle = [NSBundle bundleWithURL:url];
  36 +// if (!targetBundle) {
  37 +// return [UIImage new];
  38 +// }
  39 +// UIImage *image = [UIImage imageNamed:imageName inBundle:targetBundle compatibleWithTraitCollection:nil];
  40 +// if (image) {
  41 +// return image;
  42 +// }else {
  43 +// if ([UIImage imageNamed:imageName inBundle:[NSBundle mainBundle] compatibleWithTraitCollection:nil]) {
  44 +// return [UIImage imageNamed:imageName inBundle:[NSBundle mainBundle] compatibleWithTraitCollection:nil];
  45 +// }else{
  46 +// return [UIImage new];
  47 +// }
  48 +// }
  49 +//}
  50 +
20 51
21 @end 52 @end
Example/CNLiveDisease.xcodeproj/project.pbxproj
@@ -307,12 +307,19 @@ @@ -307,12 +307,19 @@
307 ); 307 );
308 inputPaths = ( 308 inputPaths = (
309 "${SRCROOT}/Pods/Target Support Files/Pods-CNLiveDisease_Example/Pods-CNLiveDisease_Example-frameworks.sh", 309 "${SRCROOT}/Pods/Target Support Files/Pods-CNLiveDisease_Example/Pods-CNLiveDisease_Example-frameworks.sh",
  310 + "${BUILT_PRODUCTS_DIR}/AFNetworking/AFNetworking.framework",
310 "${BUILT_PRODUCTS_DIR}/CNLiveAVCamera/CNLiveAVCamera.framework", 311 "${BUILT_PRODUCTS_DIR}/CNLiveAVCamera/CNLiveAVCamera.framework",
311 "${BUILT_PRODUCTS_DIR}/CNLiveBaseKit/CNLiveBaseKit.framework", 312 "${BUILT_PRODUCTS_DIR}/CNLiveBaseKit/CNLiveBaseKit.framework",
  313 + "${BUILT_PRODUCTS_DIR}/CNLiveBusinessTools/CNLiveBusinessTools.framework",
312 "${BUILT_PRODUCTS_DIR}/CNLiveCommonCategory/CNLiveCommonCategory.framework", 314 "${BUILT_PRODUCTS_DIR}/CNLiveCommonCategory/CNLiveCommonCategory.framework",
  315 + "${BUILT_PRODUCTS_DIR}/CNLiveCommonClass/CNLiveCommonClass.framework",
313 "${BUILT_PRODUCTS_DIR}/CNLiveCoreMediator/CNLiveCoreMediator.framework", 316 "${BUILT_PRODUCTS_DIR}/CNLiveCoreMediator/CNLiveCoreMediator.framework",
  317 + "${BUILT_PRODUCTS_DIR}/CNLiveCoreMediator_ModuleDiseaseAction/CNLiveCoreMediator_ModuleDiseaseAction.framework",
314 "${BUILT_PRODUCTS_DIR}/CNLiveDisease/CNLiveDisease.framework", 318 "${BUILT_PRODUCTS_DIR}/CNLiveDisease/CNLiveDisease.framework",
315 "${BUILT_PRODUCTS_DIR}/CNLiveImagePickerController/CNLiveImagePickerController.framework", 319 "${BUILT_PRODUCTS_DIR}/CNLiveImagePickerController/CNLiveImagePickerController.framework",
  320 + "${BUILT_PRODUCTS_DIR}/CNLiveRequestBastKit/CNLiveRequestBastKit.framework",
  321 + "${BUILT_PRODUCTS_DIR}/CNLiveTripartiteManagement-FLAnimatedImage-Masonry-QMUIKit/CNLiveTripartiteManagement.framework",
  322 + "${BUILT_PRODUCTS_DIR}/CNLiveUserManagement/CNLiveUserManagement.framework",
316 "${BUILT_PRODUCTS_DIR}/FLAnimatedImage/FLAnimatedImage.framework", 323 "${BUILT_PRODUCTS_DIR}/FLAnimatedImage/FLAnimatedImage.framework",
317 "${BUILT_PRODUCTS_DIR}/MJExtension/MJExtension.framework", 324 "${BUILT_PRODUCTS_DIR}/MJExtension/MJExtension.framework",
318 "${BUILT_PRODUCTS_DIR}/Masonry/Masonry.framework", 325 "${BUILT_PRODUCTS_DIR}/Masonry/Masonry.framework",
@@ -323,12 +330,19 @@ @@ -323,12 +330,19 @@
323 outputFileListPaths = ( 330 outputFileListPaths = (
324 ); 331 );
325 outputPaths = ( 332 outputPaths = (
  333 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AFNetworking.framework",
326 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveAVCamera.framework", 334 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveAVCamera.framework",
327 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveBaseKit.framework", 335 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveBaseKit.framework",
  336 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveBusinessTools.framework",
328 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveCommonCategory.framework", 337 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveCommonCategory.framework",
  338 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveCommonClass.framework",
329 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveCoreMediator.framework", 339 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveCoreMediator.framework",
  340 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveCoreMediator_ModuleDiseaseAction.framework",
330 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveDisease.framework", 341 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveDisease.framework",
331 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveImagePickerController.framework", 342 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveImagePickerController.framework",
  343 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveRequestBastKit.framework",
  344 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveTripartiteManagement.framework",
  345 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveUserManagement.framework",
332 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FLAnimatedImage.framework", 346 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FLAnimatedImage.framework",
333 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MJExtension.framework", 347 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MJExtension.framework",
334 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Masonry.framework", 348 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Masonry.framework",
@@ -349,11 +363,18 @@ @@ -349,11 +363,18 @@
349 ); 363 );
350 inputPaths = ( 364 inputPaths = (
351 "${SRCROOT}/Pods/Target Support Files/Pods-CNLiveDisease_Tests/Pods-CNLiveDisease_Tests-frameworks.sh", 365 "${SRCROOT}/Pods/Target Support Files/Pods-CNLiveDisease_Tests/Pods-CNLiveDisease_Tests-frameworks.sh",
  366 + "${BUILT_PRODUCTS_DIR}/AFNetworking/AFNetworking.framework",
352 "${BUILT_PRODUCTS_DIR}/CNLiveAVCamera/CNLiveAVCamera.framework", 367 "${BUILT_PRODUCTS_DIR}/CNLiveAVCamera/CNLiveAVCamera.framework",
353 "${BUILT_PRODUCTS_DIR}/CNLiveBaseKit/CNLiveBaseKit.framework", 368 "${BUILT_PRODUCTS_DIR}/CNLiveBaseKit/CNLiveBaseKit.framework",
  369 + "${BUILT_PRODUCTS_DIR}/CNLiveBusinessTools/CNLiveBusinessTools.framework",
354 "${BUILT_PRODUCTS_DIR}/CNLiveCommonCategory/CNLiveCommonCategory.framework", 370 "${BUILT_PRODUCTS_DIR}/CNLiveCommonCategory/CNLiveCommonCategory.framework",
  371 + "${BUILT_PRODUCTS_DIR}/CNLiveCommonClass/CNLiveCommonClass.framework",
355 "${BUILT_PRODUCTS_DIR}/CNLiveCoreMediator/CNLiveCoreMediator.framework", 372 "${BUILT_PRODUCTS_DIR}/CNLiveCoreMediator/CNLiveCoreMediator.framework",
  373 + "${BUILT_PRODUCTS_DIR}/CNLiveCoreMediator_ModuleDiseaseAction/CNLiveCoreMediator_ModuleDiseaseAction.framework",
356 "${BUILT_PRODUCTS_DIR}/CNLiveImagePickerController/CNLiveImagePickerController.framework", 374 "${BUILT_PRODUCTS_DIR}/CNLiveImagePickerController/CNLiveImagePickerController.framework",
  375 + "${BUILT_PRODUCTS_DIR}/CNLiveRequestBastKit/CNLiveRequestBastKit.framework",
  376 + "${BUILT_PRODUCTS_DIR}/CNLiveTripartiteManagement-Masonry-QMUIKit/CNLiveTripartiteManagement.framework",
  377 + "${BUILT_PRODUCTS_DIR}/CNLiveUserManagement/CNLiveUserManagement.framework",
357 "${BUILT_PRODUCTS_DIR}/FLAnimatedImage/FLAnimatedImage.framework", 378 "${BUILT_PRODUCTS_DIR}/FLAnimatedImage/FLAnimatedImage.framework",
358 "${BUILT_PRODUCTS_DIR}/MJExtension/MJExtension.framework", 379 "${BUILT_PRODUCTS_DIR}/MJExtension/MJExtension.framework",
359 "${BUILT_PRODUCTS_DIR}/Masonry/Masonry.framework", 380 "${BUILT_PRODUCTS_DIR}/Masonry/Masonry.framework",
@@ -364,11 +385,18 @@ @@ -364,11 +385,18 @@
364 outputFileListPaths = ( 385 outputFileListPaths = (
365 ); 386 );
366 outputPaths = ( 387 outputPaths = (
  388 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AFNetworking.framework",
367 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveAVCamera.framework", 389 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveAVCamera.framework",
368 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveBaseKit.framework", 390 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveBaseKit.framework",
  391 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveBusinessTools.framework",
369 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveCommonCategory.framework", 392 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveCommonCategory.framework",
  393 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveCommonClass.framework",
370 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveCoreMediator.framework", 394 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveCoreMediator.framework",
  395 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveCoreMediator_ModuleDiseaseAction.framework",
371 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveImagePickerController.framework", 396 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveImagePickerController.framework",
  397 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveRequestBastKit.framework",
  398 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveTripartiteManagement.framework",
  399 + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveUserManagement.framework",
372 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FLAnimatedImage.framework", 400 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FLAnimatedImage.framework",
373 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MJExtension.framework", 401 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MJExtension.framework",
374 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Masonry.framework", 402 "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Masonry.framework",
Example/CNLiveDisease.xcworkspace/xcuserdata/yinqiaojuan.xcuserdatad/UserInterfaceState.xcuserstate
No preview for this file type
Example/CNLiveDisease/CNLiveAppDelegate.m
@@ -12,12 +12,12 @@ @@ -12,12 +12,12 @@
12 12
13 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 13 - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
14 { 14 {
15 -// UIWindow *window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];  
16 -// window.backgroundColor = [UIColor whiteColor];  
17 -// UIViewController *vc = [[CNLiveViewController alloc]init];  
18 -//// UINavigationController *nav =[[UINavigationController alloc]initWithRootViewController:vc];  
19 -// window.rootViewController = vc;  
20 -// [window makeKeyAndVisible]; 15 + self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
  16 + self.window.backgroundColor = [UIColor whiteColor];
  17 + CNLiveViewController *vc = [[CNLiveViewController alloc]init];
  18 + UINavigationController *nav =[[UINavigationController alloc]initWithRootViewController:vc];
  19 + self.window.rootViewController = nav;
  20 + [self.window makeKeyAndVisible];
21 // Override point for customization after application launch. 21 // Override point for customization after application launch.
22 return YES; 22 return YES;
23 } 23 }
Example/CNLiveDisease/CNLiveDisease-Info.plist
@@ -22,8 +22,16 @@ @@ -22,8 +22,16 @@
22 <string>????</string> 22 <string>????</string>
23 <key>CFBundleVersion</key> 23 <key>CFBundleVersion</key>
24 <string>1.0</string> 24 <string>1.0</string>
  25 + <key>LSApplicationCategoryType</key>
  26 + <string></string>
25 <key>LSRequiresIPhoneOS</key> 27 <key>LSRequiresIPhoneOS</key>
26 <true/> 28 <true/>
  29 + <key>NSCameraUsageDescription</key>
  30 + <string>需要您的同意,APP才能访问相机</string>
  31 + <key>NSMicrophoneUsageDescription</key>
  32 + <string>需要您的同意,App才能访问麦克风</string>
  33 + <key>NSPhotoLibraryUsageDescription</key>
  34 + <string>需要您的同意,APP才能访问相册</string>
27 <key>UILaunchStoryboardName</key> 35 <key>UILaunchStoryboardName</key>
28 <string>LaunchScreen</string> 36 <string>LaunchScreen</string>
29 <key>UIMainStoryboardFile</key> 37 <key>UIMainStoryboardFile</key>
Example/CNLiveDisease/CNLiveViewController.m
@@ -7,8 +7,7 @@ @@ -7,8 +7,7 @@
7 // 7 //
8 8
9 #import "CNLiveViewController.h" 9 #import "CNLiveViewController.h"
10 -  
11 -#import "CNLiveCoreMediator+A.h" 10 +#import "CNLiveCoreMediator+ModuleDiseaseAction.h"
12 @interface CNLiveViewController () 11 @interface CNLiveViewController ()
13 @property (nonatomic, strong) UIButton *testButton; 12 @property (nonatomic, strong) UIButton *testButton;
14 @end 13 @end
@@ -35,11 +34,11 @@ @@ -35,11 +34,11 @@
35 -(void)testButtonClicked { 34 -(void)testButtonClicked {
36 // CNLiveDiseaseController *vc = [[CNLiveDiseaseController alloc]init]; 35 // CNLiveDiseaseController *vc = [[CNLiveDiseaseController alloc]init];
37 // vc.view.backgroundColor = [UIColor whiteColor]; 36 // vc.view.backgroundColor = [UIColor whiteColor];
38 - NSDictionary *params = [NSDictionary dictionary];  
39 - UIViewController *vc = [[CNLiveCoreMediator sharedInstance]A_ViewControllerWithParams:params]; 37 + UIViewController *vc = [[CNLiveCoreMediator sharedInstance]CNLiveCoreMediator_getDiseaseConnectVc];
40 vc.view.backgroundColor = [UIColor whiteColor]; 38 vc.view.backgroundColor = [UIColor whiteColor];
41 -// UIViewController *vc = [];  
42 - [self presentViewController:vc animated:YES completion:nil]; 39 + [self.navigationController pushViewController:vc animated:YES];
  40 +// [self presentViewController:vc animated:YES completion:nil];
  41 +
43 42
44 } 43 }
45 - (void)didReceiveMemoryWarning 44 - (void)didReceiveMemoryWarning
Example/Podfile
@@ -9,25 +9,30 @@ platform :ios, &#39;9.0&#39; @@ -9,25 +9,30 @@ platform :ios, &#39;9.0&#39;
9 target 'CNLiveDisease_Example' do 9 target 'CNLiveDisease_Example' do
10 pod 'CNLiveDisease', :path => '../' 10 pod 'CNLiveDisease', :path => '../'
11 pod 'CNLiveBaseKit' 11 pod 'CNLiveBaseKit'
12 - pod 'Masonry'  
13 - pod 'QMUIKit', '~> 3.1.0'  
14 - pod 'CNLiveCommonCategory' 12 + pod 'CNLiveTripartiteManagement/Masonry'
  13 + pod 'CNLiveTripartiteManagement/QMUIKit'
  14 + pod 'CNLiveCommonCategory'
15 pod 'CNLiveImagePickerController' 15 pod 'CNLiveImagePickerController'
16 - pod 'CNLiveAVCamera' 16 + pod 'CNLiveAVCamera'
17 # pod 'CNLiveUploadManager' 17 # pod 'CNLiveUploadManager'
18 pod 'FLAnimatedImage' 18 pod 'FLAnimatedImage'
19 pod 'CNLiveCoreMediator' 19 pod 'CNLiveCoreMediator'
  20 + pod 'CNLiveCommonClass'
  21 + pod 'CNLiveRequestBastKit'
  22 + pod 'CNLiveCoreMediator_ModuleDiseaseAction'
20 target 'CNLiveDisease_Tests' do 23 target 'CNLiveDisease_Tests' do
21 inherit! :search_paths 24 inherit! :search_paths
22 pod 'CNLiveBaseKit' 25 pod 'CNLiveBaseKit'
23 - pod 'Masonry'  
24 - pod 'QMUIKit', '~> 3.1.0'  
25 - pod 'CNLiveCommonCategory' 26 + pod 'CNLiveTripartiteManagement/Masonry'
  27 + pod 'CNLiveTripartiteManagement/QMUIKit'
  28 + pod 'CNLiveCommonCategory'
26 pod 'CNLiveImagePickerController' 29 pod 'CNLiveImagePickerController'
27 pod 'CNLiveAVCamera' 30 pod 'CNLiveAVCamera'
28 # pod 'CNLiveUploadManager' 31 # pod 'CNLiveUploadManager'
29 pod 'FLAnimatedImage' 32 pod 'FLAnimatedImage'
30 pod 'CNLiveCoreMediator' 33 pod 'CNLiveCoreMediator'
31 - 34 + pod 'CNLiveCommonClass'
  35 + pod 'CNLiveRequestBastKit'
  36 + pod 'CNLiveCoreMediator_ModuleDiseaseAction'
32 end 37 end
33 end 38 end
Example/Podfile.lock
1 PODS: 1 PODS:
2 - - CNLiveAVCamera (0.1.1): 2 + - AFNetworking (3.2.1):
  3 + - AFNetworking/NSURLSession (= 3.2.1)
  4 + - AFNetworking/Reachability (= 3.2.1)
  5 + - AFNetworking/Security (= 3.2.1)
  6 + - AFNetworking/Serialization (= 3.2.1)
  7 + - AFNetworking/UIKit (= 3.2.1)
  8 + - AFNetworking/NSURLSession (3.2.1):
  9 + - AFNetworking/Reachability
  10 + - AFNetworking/Security
  11 + - AFNetworking/Serialization
  12 + - AFNetworking/Reachability (3.2.1)
  13 + - AFNetworking/Security (3.2.1)
  14 + - AFNetworking/Serialization (3.2.1)
  15 + - AFNetworking/UIKit (3.2.1):
  16 + - AFNetworking/NSURLSession
  17 + - CNLiveAVCamera (0.1.2):
  18 + - CNLiveBaseKit
  19 + - CNLiveBusinessTools
  20 + - CNLiveCommonCategory
3 - Masonry (~> 1.0.2) 21 - Masonry (~> 1.0.2)
  22 + - QMUIKit (~> 3.1.7)
4 - CNLiveBaseKit (0.1.8): 23 - CNLiveBaseKit (0.1.8):
5 - MJExtension (~> 3.0.15.1) 24 - MJExtension (~> 3.0.15.1)
6 - - CNLiveCommonCategory (0.2.5):  
7 - - SDWebImage (~> 4.4.2)  
8 - - CNLiveCoreMediator (0.1.0)  
9 - - CNLiveDisease (0.0.7): 25 + - CNLiveBusinessTools (0.1.1):
  26 + - CNLiveBaseKit
  27 + - CNLiveEnvironmentConfiguration
  28 + - CNLiveUserManagement
  29 + - CNLiveCommonCategory (0.3.9):
  30 + - SDWebImage (~> 4.4.6)
  31 + - CNLiveCommonClass (0.0.2):
  32 + - CNLiveBaseKit
  33 + - CNLiveRequestBastKit
  34 + - CNLiveTripartiteManagement/QMUIKit
  35 + - CNLiveCoreMediator (0.1.1)
  36 + - CNLiveCoreMediator_ModuleDiseaseAction (0.0.2):
  37 + - CNLiveCoreMediator
  38 + - CNLiveDisease (0.1.0):
  39 + - CNLiveDisease/Controller (= 0.1.0)
  40 + - CNLiveDisease/View (= 0.1.0)
  41 + - CNLiveDisease/Controller (0.1.0):
10 - CNLiveAVCamera 42 - CNLiveAVCamera
11 - CNLiveBaseKit 43 - CNLiveBaseKit
12 - CNLiveCommonCategory 44 - CNLiveCommonCategory
13 - - CNLiveCoreMediator 45 + - CNLiveCommonClass
  46 + - CNLiveCoreMediator_ModuleDiseaseAction
  47 + - CNLiveDisease/View
14 - CNLiveImagePickerController 48 - CNLiveImagePickerController
15 - - FLAnimatedImage  
16 - - Masonry  
17 - - QMUIKit (~> 3.1.0) 49 + - CNLiveRequestBastKit
  50 + - CNLiveTripartiteManagement/FLAnimatedImage
  51 + - CNLiveTripartiteManagement/Masonry
  52 + - CNLiveTripartiteManagement/QMUIKit
  53 + - CNLiveDisease/View (0.1.0):
  54 + - CNLiveBaseKit
  55 + - CNLiveTripartiteManagement/QMUIKit
  56 + - CNLiveEnvironmentConfiguration (0.0.5)
18 - CNLiveImagePickerController (0.0.2) 57 - CNLiveImagePickerController (0.0.2)
  58 + - CNLiveRequestBastKit (0.2.1.6):
  59 + - AFNetworking
  60 + - CNLiveTripartiteManagement/FLAnimatedImage (0.0.6):
  61 + - FLAnimatedImage (~> 1.0.12)
  62 + - CNLiveTripartiteManagement/Masonry (0.0.6):
  63 + - Masonry (~> 1.0.2)
  64 + - CNLiveTripartiteManagement/QMUIKit (0.0.6):
  65 + - QMUIKit (~> 3.1.7)
  66 + - CNLiveUserManagement (0.0.8):
  67 + - MJExtension
19 - FLAnimatedImage (1.0.12) 68 - FLAnimatedImage (1.0.12)
20 - Masonry (1.0.2) 69 - Masonry (1.0.2)
21 - MJExtension (3.0.15.1) 70 - MJExtension (3.0.15.1)
22 - - QMUIKit (3.1.0):  
23 - - QMUIKit/QMUIComponents (= 3.1.0)  
24 - - QMUIKit/QMUICore (= 3.1.0)  
25 - - QMUIKit/QMUILog (= 3.1.0)  
26 - - QMUIKit/QMUIMainFrame (= 3.1.0)  
27 - - QMUIKit/QMUIResources (= 3.1.0)  
28 - - QMUIKit/QMUIWeakObjectContainer (= 3.1.0)  
29 - - QMUIKit/QMUIComponents (3.1.0):  
30 - - QMUIKit/QMUIComponents/NavigationBarTransition (= 3.1.0)  
31 - - QMUIKit/QMUIComponents/QMUIAlertController (= 3.1.0)  
32 - - QMUIKit/QMUIComponents/QMUIAssetLibrary (= 3.1.0)  
33 - - QMUIKit/QMUIComponents/QMUIBadge (= 3.1.0)  
34 - - QMUIKit/QMUIComponents/QMUIButton (= 3.1.0)  
35 - - QMUIKit/QMUIComponents/QMUICAAnimationExtension (= 3.1.0)  
36 - - QMUIKit/QMUIComponents/QMUICellHeightCache (= 3.1.0)  
37 - - QMUIKit/QMUIComponents/QMUICellHeightKeyCache (= 3.1.0)  
38 - - QMUIKit/QMUIComponents/QMUICellSizeKeyCache (= 3.1.0)  
39 - - QMUIKit/QMUIComponents/QMUICollectionViewPagingLayout (= 3.1.0)  
40 - - QMUIKit/QMUIComponents/QMUIConsole (= 3.1.0)  
41 - - QMUIKit/QMUIComponents/QMUIDialogViewController (= 3.1.0)  
42 - - QMUIKit/QMUIComponents/QMUIEmotionInputManager (= 3.1.0)  
43 - - QMUIKit/QMUIComponents/QMUIEmotionView (= 3.1.0)  
44 - - QMUIKit/QMUIComponents/QMUIEmptyView (= 3.1.0)  
45 - - QMUIKit/QMUIComponents/QMUIFillButton (= 3.1.0)  
46 - - QMUIKit/QMUIComponents/QMUIFloatLayoutView (= 3.1.0)  
47 - - QMUIKit/QMUIComponents/QMUIGhostButton (= 3.1.0)  
48 - - QMUIKit/QMUIComponents/QMUIGridView (= 3.1.0)  
49 - - QMUIKit/QMUIComponents/QMUIImagePickerLibrary (= 3.1.0)  
50 - - QMUIKit/QMUIComponents/QMUIImagePreviewView (= 3.1.0)  
51 - - QMUIKit/QMUIComponents/QMUIKeyboardManager (= 3.1.0)  
52 - - QMUIKit/QMUIComponents/QMUILabel (= 3.1.0)  
53 - - QMUIKit/QMUIComponents/QMUILinkButton (= 3.1.0)  
54 - - QMUIKit/QMUIComponents/QMUILogManagerViewController (= 3.1.0)  
55 - - QMUIKit/QMUIComponents/QMUILogWithConfigurationSupported (= 3.1.0)  
56 - - QMUIKit/QMUIComponents/QMUIMarqueeLabel (= 3.1.0)  
57 - - QMUIKit/QMUIComponents/QMUIModalPresentationViewController (= 3.1.0)  
58 - - QMUIKit/QMUIComponents/QMUIMoreOperationController (= 3.1.0)  
59 - - QMUIKit/QMUIComponents/QMUIMultipleDelegates (= 3.1.0)  
60 - - QMUIKit/QMUIComponents/QMUINavigationButton (= 3.1.0)  
61 - - QMUIKit/QMUIComponents/QMUINavigationTitleView (= 3.1.0)  
62 - - QMUIKit/QMUIComponents/QMUIOrderedDictionary (= 3.1.0)  
63 - - QMUIKit/QMUIComponents/QMUIPieProgressView (= 3.1.0)  
64 - - QMUIKit/QMUIComponents/QMUIPopupContainerView (= 3.1.0)  
65 - - QMUIKit/QMUIComponents/QMUIPopupMenuView (= 3.1.0)  
66 - - QMUIKit/QMUIComponents/QMUIScrollAnimator (= 3.1.0)  
67 - - QMUIKit/QMUIComponents/QMUISearchBar (= 3.1.0)  
68 - - QMUIKit/QMUIComponents/QMUISearchController (= 3.1.0)  
69 - - QMUIKit/QMUIComponents/QMUISegmentedControl (= 3.1.0)  
70 - - QMUIKit/QMUIComponents/QMUISlider (= 3.1.0)  
71 - - QMUIKit/QMUIComponents/QMUIStaticTableView (= 3.1.0)  
72 - - QMUIKit/QMUIComponents/QMUITableView (= 3.1.0)  
73 - - QMUIKit/QMUIComponents/QMUITableViewCell (= 3.1.0)  
74 - - QMUIKit/QMUIComponents/QMUITableViewHeaderFooterView (= 3.1.0)  
75 - - QMUIKit/QMUIComponents/QMUITableViewProtocols (= 3.1.0)  
76 - - QMUIKit/QMUIComponents/QMUITestView (= 3.1.0)  
77 - - QMUIKit/QMUIComponents/QMUITextField (= 3.1.0)  
78 - - QMUIKit/QMUIComponents/QMUITextView (= 3.1.0)  
79 - - QMUIKit/QMUIComponents/QMUITips (= 3.1.0)  
80 - - QMUIKit/QMUIComponents/QMUIToastView (= 3.1.0)  
81 - - QMUIKit/QMUIComponents/QMUIToolbarButton (= 3.1.0)  
82 - - QMUIKit/QMUIComponents/QMUIVisualEffectView (= 3.1.0)  
83 - - QMUIKit/QMUIComponents/QMUIZoomImageView (= 3.1.0)  
84 - - QMUIKit/QMUICore  
85 - - QMUIKit/QMUIComponents/NavigationBarTransition (3.1.0): 71 + - QMUIKit (3.1.9):
  72 + - QMUIKit/QMUIComponents (= 3.1.9)
  73 + - QMUIKit/QMUICore (= 3.1.9)
  74 + - QMUIKit/QMUILog (= 3.1.9)
  75 + - QMUIKit/QMUIMainFrame (= 3.1.9)
  76 + - QMUIKit/QMUIResources (= 3.1.9)
  77 + - QMUIKit/QMUIWeakObjectContainer (= 3.1.9)
  78 + - QMUIKit/QMUIComponents (3.1.9):
  79 + - QMUIKit/QMUIComponents/NavigationBarTransition (= 3.1.9)
  80 + - QMUIKit/QMUIComponents/QMUIAlertController (= 3.1.9)
  81 + - QMUIKit/QMUIComponents/QMUIAssetLibrary (= 3.1.9)
  82 + - QMUIKit/QMUIComponents/QMUIBadge (= 3.1.9)
  83 + - QMUIKit/QMUIComponents/QMUIButton (= 3.1.9)
  84 + - QMUIKit/QMUIComponents/QMUICAAnimationExtension (= 3.1.9)
  85 + - QMUIKit/QMUIComponents/QMUICellHeightCache (= 3.1.9)
  86 + - QMUIKit/QMUIComponents/QMUICellHeightKeyCache (= 3.1.9)
  87 + - QMUIKit/QMUIComponents/QMUICellSizeKeyCache (= 3.1.9)
  88 + - QMUIKit/QMUIComponents/QMUICollectionViewPagingLayout (= 3.1.9)
  89 + - QMUIKit/QMUIComponents/QMUIConsole (= 3.1.9)
  90 + - QMUIKit/QMUIComponents/QMUIDialogViewController (= 3.1.9)
  91 + - QMUIKit/QMUIComponents/QMUIEmotionInputManager (= 3.1.9)
  92 + - QMUIKit/QMUIComponents/QMUIEmotionView (= 3.1.9)
  93 + - QMUIKit/QMUIComponents/QMUIEmptyView (= 3.1.9)
  94 + - QMUIKit/QMUIComponents/QMUIFillButton (= 3.1.9)
  95 + - QMUIKit/QMUIComponents/QMUIFloatLayoutView (= 3.1.9)
  96 + - QMUIKit/QMUIComponents/QMUIGhostButton (= 3.1.9)
  97 + - QMUIKit/QMUIComponents/QMUIGridView (= 3.1.9)
  98 + - QMUIKit/QMUIComponents/QMUIImagePickerLibrary (= 3.1.9)
  99 + - QMUIKit/QMUIComponents/QMUIImagePreviewView (= 3.1.9)
  100 + - QMUIKit/QMUIComponents/QMUIKeyboardManager (= 3.1.9)
  101 + - QMUIKit/QMUIComponents/QMUILabel (= 3.1.9)
  102 + - QMUIKit/QMUIComponents/QMUILinkButton (= 3.1.9)
  103 + - QMUIKit/QMUIComponents/QMUILogManagerViewController (= 3.1.9)
  104 + - QMUIKit/QMUIComponents/QMUILogWithConfigurationSupported (= 3.1.9)
  105 + - QMUIKit/QMUIComponents/QMUIMarqueeLabel (= 3.1.9)
  106 + - QMUIKit/QMUIComponents/QMUIModalPresentationViewController (= 3.1.9)
  107 + - QMUIKit/QMUIComponents/QMUIMoreOperationController (= 3.1.9)
  108 + - QMUIKit/QMUIComponents/QMUIMultipleDelegates (= 3.1.9)
  109 + - QMUIKit/QMUIComponents/QMUINavigationButton (= 3.1.9)
  110 + - QMUIKit/QMUIComponents/QMUINavigationTitleView (= 3.1.9)
  111 + - QMUIKit/QMUIComponents/QMUIOrderedDictionary (= 3.1.9)
  112 + - QMUIKit/QMUIComponents/QMUIPieProgressView (= 3.1.9)
  113 + - QMUIKit/QMUIComponents/QMUIPopupContainerView (= 3.1.9)
  114 + - QMUIKit/QMUIComponents/QMUIPopupMenuView (= 3.1.9)
  115 + - QMUIKit/QMUIComponents/QMUIScrollAnimator (= 3.1.9)
  116 + - QMUIKit/QMUIComponents/QMUISearchBar (= 3.1.9)
  117 + - QMUIKit/QMUIComponents/QMUISearchController (= 3.1.9)
  118 + - QMUIKit/QMUIComponents/QMUISegmentedControl (= 3.1.9)
  119 + - QMUIKit/QMUIComponents/QMUISlider (= 3.1.9)
  120 + - QMUIKit/QMUIComponents/QMUIStaticTableView (= 3.1.9)
  121 + - QMUIKit/QMUIComponents/QMUITableView (= 3.1.9)
  122 + - QMUIKit/QMUIComponents/QMUITableViewCell (= 3.1.9)
  123 + - QMUIKit/QMUIComponents/QMUITableViewHeaderFooterView (= 3.1.9)
  124 + - QMUIKit/QMUIComponents/QMUITableViewProtocols (= 3.1.9)
  125 + - QMUIKit/QMUIComponents/QMUITestView (= 3.1.9)
  126 + - QMUIKit/QMUIComponents/QMUITextField (= 3.1.9)
  127 + - QMUIKit/QMUIComponents/QMUITextView (= 3.1.9)
  128 + - QMUIKit/QMUIComponents/QMUITips (= 3.1.9)
  129 + - QMUIKit/QMUIComponents/QMUIToastView (= 3.1.9)
  130 + - QMUIKit/QMUIComponents/QMUIToolbarButton (= 3.1.9)
  131 + - QMUIKit/QMUIComponents/QMUIVisualEffectView (= 3.1.9)
  132 + - QMUIKit/QMUIComponents/QMUIZoomImageView (= 3.1.9)
  133 + - QMUIKit/QMUICore
  134 + - QMUIKit/QMUIComponents/NavigationBarTransition (3.1.9):
86 - QMUIKit/QMUIComponents/QMUINavigationTitleView 135 - QMUIKit/QMUIComponents/QMUINavigationTitleView
87 - QMUIKit/QMUICore 136 - QMUIKit/QMUICore
88 - QMUIKit/QMUIMainFrame 137 - QMUIKit/QMUIMainFrame
89 - - QMUIKit/QMUIComponents/QMUIAlertController (3.1.0): 138 + - QMUIKit/QMUIComponents/QMUIAlertController (3.1.9):
90 - QMUIKit/QMUIComponents/QMUIButton 139 - QMUIKit/QMUIComponents/QMUIButton
91 - QMUIKit/QMUIComponents/QMUIModalPresentationViewController 140 - QMUIKit/QMUIComponents/QMUIModalPresentationViewController
92 - QMUIKit/QMUIComponents/QMUITextField 141 - QMUIKit/QMUIComponents/QMUITextField
93 - QMUIKit/QMUICore 142 - QMUIKit/QMUICore
94 - - QMUIKit/QMUIComponents/QMUIAssetLibrary (3.1.0): 143 + - QMUIKit/QMUIComponents/QMUIAssetLibrary (3.1.9):
95 - QMUIKit/QMUICore 144 - QMUIKit/QMUICore
96 - - QMUIKit/QMUIComponents/QMUIBadge (3.1.0): 145 + - QMUIKit/QMUIComponents/QMUIBadge (3.1.9):
97 - QMUIKit/QMUIComponents/QMUILabel 146 - QMUIKit/QMUIComponents/QMUILabel
98 - QMUIKit/QMUICore 147 - QMUIKit/QMUICore
99 - - QMUIKit/QMUIComponents/QMUIButton (3.1.0): 148 + - QMUIKit/QMUIComponents/QMUIButton (3.1.9):
100 - QMUIKit/QMUICore 149 - QMUIKit/QMUICore
101 - - QMUIKit/QMUIComponents/QMUICAAnimationExtension (3.1.0): 150 + - QMUIKit/QMUIComponents/QMUICAAnimationExtension (3.1.9):
102 - QMUIKit/QMUIComponents/QMUIMultipleDelegates 151 - QMUIKit/QMUIComponents/QMUIMultipleDelegates
103 - QMUIKit/QMUICore 152 - QMUIKit/QMUICore
104 - - QMUIKit/QMUIComponents/QMUICellHeightCache (3.1.0): 153 + - QMUIKit/QMUIComponents/QMUICellHeightCache (3.1.9):
105 - QMUIKit/QMUIComponents/QMUITableViewProtocols 154 - QMUIKit/QMUIComponents/QMUITableViewProtocols
106 - QMUIKit/QMUICore 155 - QMUIKit/QMUICore
107 - - QMUIKit/QMUIComponents/QMUICellHeightKeyCache (3.1.0): 156 + - QMUIKit/QMUIComponents/QMUICellHeightKeyCache (3.1.9):
108 - QMUIKit/QMUIComponents/QMUIMultipleDelegates 157 - QMUIKit/QMUIComponents/QMUIMultipleDelegates
109 - QMUIKit/QMUIComponents/QMUITableViewProtocols 158 - QMUIKit/QMUIComponents/QMUITableViewProtocols
110 - QMUIKit/QMUICore 159 - QMUIKit/QMUICore
111 - - QMUIKit/QMUIComponents/QMUICellSizeKeyCache (3.1.0): 160 + - QMUIKit/QMUIComponents/QMUICellSizeKeyCache (3.1.9):
112 - QMUIKit/QMUIComponents/QMUIMultipleDelegates 161 - QMUIKit/QMUIComponents/QMUIMultipleDelegates
113 - QMUIKit/QMUICore 162 - QMUIKit/QMUICore
114 - - QMUIKit/QMUIComponents/QMUICollectionViewPagingLayout (3.1.0): 163 + - QMUIKit/QMUIComponents/QMUICollectionViewPagingLayout (3.1.9):
115 - QMUIKit/QMUICore 164 - QMUIKit/QMUICore
116 - - QMUIKit/QMUIComponents/QMUIConsole (3.1.0): 165 + - QMUIKit/QMUIComponents/QMUIConsole (3.1.9):
117 - QMUIKit/QMUIComponents/QMUIButton 166 - QMUIKit/QMUIComponents/QMUIButton
118 - QMUIKit/QMUIComponents/QMUICAAnimationExtension 167 - QMUIKit/QMUIComponents/QMUICAAnimationExtension
119 - QMUIKit/QMUIComponents/QMUIPopupMenuView 168 - QMUIKit/QMUIComponents/QMUIPopupMenuView
120 - QMUIKit/QMUIComponents/QMUITextField 169 - QMUIKit/QMUIComponents/QMUITextField
121 - QMUIKit/QMUIComponents/QMUITextView 170 - QMUIKit/QMUIComponents/QMUITextView
122 - QMUIKit/QMUICore 171 - QMUIKit/QMUICore
123 - - QMUIKit/QMUIComponents/QMUIDialogViewController (3.1.0): 172 + - QMUIKit/QMUIComponents/QMUIDialogViewController (3.1.9):
124 - QMUIKit/QMUIComponents/QMUIButton 173 - QMUIKit/QMUIComponents/QMUIButton
125 - QMUIKit/QMUIComponents/QMUILabel 174 - QMUIKit/QMUIComponents/QMUILabel
126 - QMUIKit/QMUIComponents/QMUIModalPresentationViewController 175 - QMUIKit/QMUIComponents/QMUIModalPresentationViewController
@@ -130,27 +179,27 @@ PODS: @@ -130,27 +179,27 @@ PODS:
130 - QMUIKit/QMUIComponents/QMUITextField 179 - QMUIKit/QMUIComponents/QMUITextField
131 - QMUIKit/QMUICore 180 - QMUIKit/QMUICore
132 - QMUIKit/QMUIMainFrame 181 - QMUIKit/QMUIMainFrame
133 - - QMUIKit/QMUIComponents/QMUIEmotionInputManager (3.1.0): 182 + - QMUIKit/QMUIComponents/QMUIEmotionInputManager (3.1.9):
134 - QMUIKit/QMUIComponents/QMUIEmotionView 183 - QMUIKit/QMUIComponents/QMUIEmotionView
135 - QMUIKit/QMUICore 184 - QMUIKit/QMUICore
136 - - QMUIKit/QMUIComponents/QMUIEmotionView (3.1.0): 185 + - QMUIKit/QMUIComponents/QMUIEmotionView (3.1.9):
137 - QMUIKit/QMUIComponents/QMUIButton 186 - QMUIKit/QMUIComponents/QMUIButton
138 - QMUIKit/QMUICore 187 - QMUIKit/QMUICore
139 - QMUIKit/QMUIResources 188 - QMUIKit/QMUIResources
140 - - QMUIKit/QMUIComponents/QMUIEmptyView (3.1.0): 189 + - QMUIKit/QMUIComponents/QMUIEmptyView (3.1.9):
141 - QMUIKit/QMUIComponents/QMUIButton 190 - QMUIKit/QMUIComponents/QMUIButton
142 - QMUIKit/QMUICore 191 - QMUIKit/QMUICore
143 - - QMUIKit/QMUIComponents/QMUIFillButton (3.1.0): 192 + - QMUIKit/QMUIComponents/QMUIFillButton (3.1.9):
144 - QMUIKit/QMUIComponents/QMUIButton 193 - QMUIKit/QMUIComponents/QMUIButton
145 - QMUIKit/QMUICore 194 - QMUIKit/QMUICore
146 - - QMUIKit/QMUIComponents/QMUIFloatLayoutView (3.1.0): 195 + - QMUIKit/QMUIComponents/QMUIFloatLayoutView (3.1.9):
147 - QMUIKit/QMUICore 196 - QMUIKit/QMUICore
148 - - QMUIKit/QMUIComponents/QMUIGhostButton (3.1.0): 197 + - QMUIKit/QMUIComponents/QMUIGhostButton (3.1.9):
149 - QMUIKit/QMUIComponents/QMUIButton 198 - QMUIKit/QMUIComponents/QMUIButton
150 - QMUIKit/QMUICore 199 - QMUIKit/QMUICore
151 - - QMUIKit/QMUIComponents/QMUIGridView (3.1.0): 200 + - QMUIKit/QMUIComponents/QMUIGridView (3.1.9):
152 - QMUIKit/QMUICore 201 - QMUIKit/QMUICore
153 - - QMUIKit/QMUIComponents/QMUIImagePickerLibrary (3.1.0): 202 + - QMUIKit/QMUIComponents/QMUIImagePickerLibrary (3.1.9):
154 - QMUIKit/QMUIComponents/QMUIAlertController 203 - QMUIKit/QMUIComponents/QMUIAlertController
155 - QMUIKit/QMUIComponents/QMUIAssetLibrary 204 - QMUIKit/QMUIComponents/QMUIAssetLibrary
156 - QMUIKit/QMUIComponents/QMUIButton 205 - QMUIKit/QMUIComponents/QMUIButton
@@ -162,7 +211,7 @@ PODS: @@ -162,7 +211,7 @@ PODS:
162 - QMUIKit/QMUICore 211 - QMUIKit/QMUICore
163 - QMUIKit/QMUIMainFrame 212 - QMUIKit/QMUIMainFrame
164 - QMUIKit/QMUIResources 213 - QMUIKit/QMUIResources
165 - - QMUIKit/QMUIComponents/QMUIImagePreviewView (3.1.0): 214 + - QMUIKit/QMUIComponents/QMUIImagePreviewView (3.1.9):
166 - QMUIKit/QMUIComponents/QMUIButton 215 - QMUIKit/QMUIComponents/QMUIButton
167 - QMUIKit/QMUIComponents/QMUICollectionViewPagingLayout 216 - QMUIKit/QMUIComponents/QMUICollectionViewPagingLayout
168 - QMUIKit/QMUIComponents/QMUIEmptyView 217 - QMUIKit/QMUIComponents/QMUIEmptyView
@@ -170,111 +219,111 @@ PODS: @@ -170,111 +219,111 @@ PODS:
170 - QMUIKit/QMUIComponents/QMUIZoomImageView 219 - QMUIKit/QMUIComponents/QMUIZoomImageView
171 - QMUIKit/QMUICore 220 - QMUIKit/QMUICore
172 - QMUIKit/QMUIMainFrame 221 - QMUIKit/QMUIMainFrame
173 - - QMUIKit/QMUIComponents/QMUIKeyboardManager (3.1.0): 222 + - QMUIKit/QMUIComponents/QMUIKeyboardManager (3.1.9):
174 - QMUIKit/QMUICore 223 - QMUIKit/QMUICore
175 - - QMUIKit/QMUIComponents/QMUILabel (3.1.0): 224 + - QMUIKit/QMUIComponents/QMUILabel (3.1.9):
176 - QMUIKit/QMUICore 225 - QMUIKit/QMUICore
177 - - QMUIKit/QMUIComponents/QMUILinkButton (3.1.0): 226 + - QMUIKit/QMUIComponents/QMUILinkButton (3.1.9):
178 - QMUIKit/QMUIComponents/QMUIButton 227 - QMUIKit/QMUIComponents/QMUIButton
179 - QMUIKit/QMUICore 228 - QMUIKit/QMUICore
180 - - QMUIKit/QMUIComponents/QMUILogManagerViewController (3.1.0): 229 + - QMUIKit/QMUIComponents/QMUILogManagerViewController (3.1.9):
181 - QMUIKit/QMUIComponents/QMUIPopupMenuView 230 - QMUIKit/QMUIComponents/QMUIPopupMenuView
182 - QMUIKit/QMUIComponents/QMUISearchController 231 - QMUIKit/QMUIComponents/QMUISearchController
183 - QMUIKit/QMUIComponents/QMUIStaticTableView 232 - QMUIKit/QMUIComponents/QMUIStaticTableView
184 - QMUIKit/QMUIComponents/QMUITableView 233 - QMUIKit/QMUIComponents/QMUITableView
185 - QMUIKit/QMUICore 234 - QMUIKit/QMUICore
186 - QMUIKit/QMUIMainFrame 235 - QMUIKit/QMUIMainFrame
187 - - QMUIKit/QMUIComponents/QMUILogWithConfigurationSupported (3.1.0): 236 + - QMUIKit/QMUIComponents/QMUILogWithConfigurationSupported (3.1.9):
188 - QMUIKit/QMUICore 237 - QMUIKit/QMUICore
189 - - QMUIKit/QMUIComponents/QMUIMarqueeLabel (3.1.0): 238 + - QMUIKit/QMUIComponents/QMUIMarqueeLabel (3.1.9):
190 - QMUIKit/QMUICore 239 - QMUIKit/QMUICore
191 - - QMUIKit/QMUIComponents/QMUIModalPresentationViewController (3.1.0): 240 + - QMUIKit/QMUIComponents/QMUIModalPresentationViewController (3.1.9):
192 - QMUIKit/QMUIComponents/QMUIKeyboardManager 241 - QMUIKit/QMUIComponents/QMUIKeyboardManager
193 - QMUIKit/QMUICore 242 - QMUIKit/QMUICore
194 - - QMUIKit/QMUIComponents/QMUIMoreOperationController (3.1.0): 243 + - QMUIKit/QMUIComponents/QMUIMoreOperationController (3.1.9):
195 - QMUIKit/QMUIComponents/QMUIButton 244 - QMUIKit/QMUIComponents/QMUIButton
196 - QMUIKit/QMUIComponents/QMUIModalPresentationViewController 245 - QMUIKit/QMUIComponents/QMUIModalPresentationViewController
197 - QMUIKit/QMUICore 246 - QMUIKit/QMUICore
198 - - QMUIKit/QMUIComponents/QMUIMultipleDelegates (3.1.0): 247 + - QMUIKit/QMUIComponents/QMUIMultipleDelegates (3.1.9):
199 - QMUIKit/QMUICore 248 - QMUIKit/QMUICore
200 - - QMUIKit/QMUIComponents/QMUINavigationButton (3.1.0): 249 + - QMUIKit/QMUIComponents/QMUINavigationButton (3.1.9):
201 - QMUIKit/QMUICore 250 - QMUIKit/QMUICore
202 - QMUIKit/QMUIMainFrame 251 - QMUIKit/QMUIMainFrame
203 - - QMUIKit/QMUIComponents/QMUINavigationTitleView (3.1.0): 252 + - QMUIKit/QMUIComponents/QMUINavigationTitleView (3.1.9):
204 - QMUIKit/QMUIComponents/QMUIButton 253 - QMUIKit/QMUIComponents/QMUIButton
205 - QMUIKit/QMUICore 254 - QMUIKit/QMUICore
206 - - QMUIKit/QMUIComponents/QMUIOrderedDictionary (3.1.0): 255 + - QMUIKit/QMUIComponents/QMUIOrderedDictionary (3.1.9):
207 - QMUIKit/QMUICore 256 - QMUIKit/QMUICore
208 - - QMUIKit/QMUIComponents/QMUIPieProgressView (3.1.0): 257 + - QMUIKit/QMUIComponents/QMUIPieProgressView (3.1.9):
209 - QMUIKit/QMUICore 258 - QMUIKit/QMUICore
210 - - QMUIKit/QMUIComponents/QMUIPopupContainerView (3.1.0): 259 + - QMUIKit/QMUIComponents/QMUIPopupContainerView (3.1.9):
211 - QMUIKit/QMUICore 260 - QMUIKit/QMUICore
212 - QMUIKit/QMUIMainFrame 261 - QMUIKit/QMUIMainFrame
213 - - QMUIKit/QMUIComponents/QMUIPopupMenuView (3.1.0): 262 + - QMUIKit/QMUIComponents/QMUIPopupMenuView (3.1.9):
214 - QMUIKit/QMUIComponents/QMUIButton 263 - QMUIKit/QMUIComponents/QMUIButton
215 - QMUIKit/QMUIComponents/QMUIPopupContainerView 264 - QMUIKit/QMUIComponents/QMUIPopupContainerView
216 - QMUIKit/QMUICore 265 - QMUIKit/QMUICore
217 - - QMUIKit/QMUIComponents/QMUIScrollAnimator (3.1.0): 266 + - QMUIKit/QMUIComponents/QMUIScrollAnimator (3.1.9):
218 - QMUIKit/QMUIComponents/QMUIMultipleDelegates 267 - QMUIKit/QMUIComponents/QMUIMultipleDelegates
219 - QMUIKit/QMUICore 268 - QMUIKit/QMUICore
220 - - QMUIKit/QMUIComponents/QMUISearchBar (3.1.0): 269 + - QMUIKit/QMUIComponents/QMUISearchBar (3.1.9):
221 - QMUIKit/QMUICore 270 - QMUIKit/QMUICore
222 - - QMUIKit/QMUIComponents/QMUISearchController (3.1.0): 271 + - QMUIKit/QMUIComponents/QMUISearchController (3.1.9):
223 - QMUIKit/QMUIComponents/QMUIEmptyView 272 - QMUIKit/QMUIComponents/QMUIEmptyView
224 - QMUIKit/QMUIComponents/QMUISearchBar 273 - QMUIKit/QMUIComponents/QMUISearchBar
225 - QMUIKit/QMUICore 274 - QMUIKit/QMUICore
226 - QMUIKit/QMUIMainFrame 275 - QMUIKit/QMUIMainFrame
227 - - QMUIKit/QMUIComponents/QMUISegmentedControl (3.1.0): 276 + - QMUIKit/QMUIComponents/QMUISegmentedControl (3.1.9):
228 - QMUIKit/QMUICore 277 - QMUIKit/QMUICore
229 - - QMUIKit/QMUIComponents/QMUISlider (3.1.0): 278 + - QMUIKit/QMUIComponents/QMUISlider (3.1.9):
230 - QMUIKit/QMUICore 279 - QMUIKit/QMUICore
231 - - QMUIKit/QMUIComponents/QMUIStaticTableView (3.1.0): 280 + - QMUIKit/QMUIComponents/QMUIStaticTableView (3.1.9):
232 - QMUIKit/QMUIComponents/QMUIMultipleDelegates 281 - QMUIKit/QMUIComponents/QMUIMultipleDelegates
233 - QMUIKit/QMUIComponents/QMUITableViewCell 282 - QMUIKit/QMUIComponents/QMUITableViewCell
234 - QMUIKit/QMUICore 283 - QMUIKit/QMUICore
235 - - QMUIKit/QMUIComponents/QMUITableView (3.1.0): 284 + - QMUIKit/QMUIComponents/QMUITableView (3.1.9):
236 - QMUIKit/QMUIComponents/QMUITableViewProtocols 285 - QMUIKit/QMUIComponents/QMUITableViewProtocols
237 - QMUIKit/QMUICore 286 - QMUIKit/QMUICore
238 - - QMUIKit/QMUIComponents/QMUITableViewCell (3.1.0): 287 + - QMUIKit/QMUIComponents/QMUITableViewCell (3.1.9):
239 - QMUIKit/QMUIComponents/QMUIButton 288 - QMUIKit/QMUIComponents/QMUIButton
240 - QMUIKit/QMUICore 289 - QMUIKit/QMUICore
241 - - QMUIKit/QMUIComponents/QMUITableViewHeaderFooterView (3.1.0): 290 + - QMUIKit/QMUIComponents/QMUITableViewHeaderFooterView (3.1.9):
242 - QMUIKit/QMUICore 291 - QMUIKit/QMUICore
243 - - QMUIKit/QMUIComponents/QMUITableViewProtocols (3.1.0): 292 + - QMUIKit/QMUIComponents/QMUITableViewProtocols (3.1.9):
244 - QMUIKit/QMUICore 293 - QMUIKit/QMUICore
245 - - QMUIKit/QMUIComponents/QMUITestView (3.1.0): 294 + - QMUIKit/QMUIComponents/QMUITestView (3.1.9):
246 - QMUIKit/QMUICore 295 - QMUIKit/QMUICore
247 - - QMUIKit/QMUIComponents/QMUITextField (3.1.0): 296 + - QMUIKit/QMUIComponents/QMUITextField (3.1.9):
248 - QMUIKit/QMUIComponents/QMUIMultipleDelegates 297 - QMUIKit/QMUIComponents/QMUIMultipleDelegates
249 - QMUIKit/QMUICore 298 - QMUIKit/QMUICore
250 - - QMUIKit/QMUIComponents/QMUITextView (3.1.0): 299 + - QMUIKit/QMUIComponents/QMUITextView (3.1.9):
251 - QMUIKit/QMUIComponents/QMUILabel 300 - QMUIKit/QMUIComponents/QMUILabel
252 - QMUIKit/QMUIComponents/QMUIMultipleDelegates 301 - QMUIKit/QMUIComponents/QMUIMultipleDelegates
253 - QMUIKit/QMUICore 302 - QMUIKit/QMUICore
254 - - QMUIKit/QMUIComponents/QMUITips (3.1.0): 303 + - QMUIKit/QMUIComponents/QMUITips (3.1.9):
255 - QMUIKit/QMUIComponents/QMUIToastView 304 - QMUIKit/QMUIComponents/QMUIToastView
256 - QMUIKit/QMUICore 305 - QMUIKit/QMUICore
257 - QMUIKit/QMUIResources 306 - QMUIKit/QMUIResources
258 - - QMUIKit/QMUIComponents/QMUIToastView (3.1.0): 307 + - QMUIKit/QMUIComponents/QMUIToastView (3.1.9):
259 - QMUIKit/QMUIComponents/QMUIKeyboardManager 308 - QMUIKit/QMUIComponents/QMUIKeyboardManager
260 - QMUIKit/QMUIComponents/QMUIVisualEffectView 309 - QMUIKit/QMUIComponents/QMUIVisualEffectView
261 - QMUIKit/QMUICore 310 - QMUIKit/QMUICore
262 - - QMUIKit/QMUIComponents/QMUIToolbarButton (3.1.0): 311 + - QMUIKit/QMUIComponents/QMUIToolbarButton (3.1.9):
263 - QMUIKit/QMUICore 312 - QMUIKit/QMUICore
264 - - QMUIKit/QMUIComponents/QMUIVisualEffectView (3.1.0): 313 + - QMUIKit/QMUIComponents/QMUIVisualEffectView (3.1.9):
265 - QMUIKit/QMUICore 314 - QMUIKit/QMUICore
266 - - QMUIKit/QMUIComponents/QMUIZoomImageView (3.1.0): 315 + - QMUIKit/QMUIComponents/QMUIZoomImageView (3.1.9):
267 - QMUIKit/QMUIComponents/QMUIAssetLibrary 316 - QMUIKit/QMUIComponents/QMUIAssetLibrary
268 - QMUIKit/QMUIComponents/QMUIButton 317 - QMUIKit/QMUIComponents/QMUIButton
269 - QMUIKit/QMUIComponents/QMUIEmptyView 318 - QMUIKit/QMUIComponents/QMUIEmptyView
270 - QMUIKit/QMUIComponents/QMUIPieProgressView 319 - QMUIKit/QMUIComponents/QMUIPieProgressView
271 - QMUIKit/QMUIComponents/QMUISlider 320 - QMUIKit/QMUIComponents/QMUISlider
272 - QMUIKit/QMUICore 321 - QMUIKit/QMUICore
273 - - QMUIKit/QMUICore (3.1.0): 322 + - QMUIKit/QMUICore (3.1.9):
274 - QMUIKit/QMUILog 323 - QMUIKit/QMUILog
275 - QMUIKit/QMUIWeakObjectContainer 324 - QMUIKit/QMUIWeakObjectContainer
276 - - QMUIKit/QMUILog (3.1.0)  
277 - - QMUIKit/QMUIMainFrame (3.1.0): 325 + - QMUIKit/QMUILog (3.1.9)
  326 + - QMUIKit/QMUIMainFrame (3.1.9):
278 - QMUIKit/QMUIComponents/QMUIEmptyView 327 - QMUIKit/QMUIComponents/QMUIEmptyView
279 - QMUIKit/QMUIComponents/QMUIKeyboardManager 328 - QMUIKit/QMUIComponents/QMUIKeyboardManager
280 - QMUIKit/QMUIComponents/QMUIMultipleDelegates 329 - QMUIKit/QMUIComponents/QMUIMultipleDelegates
@@ -283,31 +332,42 @@ PODS: @@ -283,31 +332,42 @@ PODS:
283 - QMUIKit/QMUIComponents/QMUITableViewHeaderFooterView 332 - QMUIKit/QMUIComponents/QMUITableViewHeaderFooterView
284 - QMUIKit/QMUICore 333 - QMUIKit/QMUICore
285 - QMUIKit/QMUILog 334 - QMUIKit/QMUILog
286 - - QMUIKit/QMUIResources (3.1.0)  
287 - - QMUIKit/QMUIWeakObjectContainer (3.1.0)  
288 - - SDWebImage (4.4.3):  
289 - - SDWebImage/Core (= 4.4.3)  
290 - - SDWebImage/Core (4.4.3) 335 + - QMUIKit/QMUIResources (3.1.9)
  336 + - QMUIKit/QMUIWeakObjectContainer (3.1.9)
  337 + - SDWebImage (4.4.6):
  338 + - SDWebImage/Core (= 4.4.6)
  339 + - SDWebImage/Core (4.4.6)
291 340
292 DEPENDENCIES: 341 DEPENDENCIES:
293 - CNLiveAVCamera 342 - CNLiveAVCamera
294 - CNLiveBaseKit 343 - CNLiveBaseKit
295 - CNLiveCommonCategory 344 - CNLiveCommonCategory
  345 + - CNLiveCommonClass
296 - CNLiveCoreMediator 346 - CNLiveCoreMediator
  347 + - CNLiveCoreMediator_ModuleDiseaseAction
297 - CNLiveDisease (from `../`) 348 - CNLiveDisease (from `../`)
298 - CNLiveImagePickerController 349 - CNLiveImagePickerController
  350 + - CNLiveRequestBastKit
  351 + - CNLiveTripartiteManagement/Masonry
  352 + - CNLiveTripartiteManagement/QMUIKit
299 - FLAnimatedImage 353 - FLAnimatedImage
300 - - Masonry  
301 - - QMUIKit (~> 3.1.0)  
302 354
303 SPEC REPOS: 355 SPEC REPOS:
304 http://bj.gitlab.cnlive.com/ios-team/CNLiveRepos.git: 356 http://bj.gitlab.cnlive.com/ios-team/CNLiveRepos.git:
305 - CNLiveAVCamera 357 - CNLiveAVCamera
306 - CNLiveBaseKit 358 - CNLiveBaseKit
  359 + - CNLiveBusinessTools
307 - CNLiveCommonCategory 360 - CNLiveCommonCategory
  361 + - CNLiveCommonClass
308 - CNLiveCoreMediator 362 - CNLiveCoreMediator
  363 + - CNLiveCoreMediator_ModuleDiseaseAction
  364 + - CNLiveEnvironmentConfiguration
309 - CNLiveImagePickerController 365 - CNLiveImagePickerController
  366 + - CNLiveRequestBastKit
  367 + - CNLiveTripartiteManagement
  368 + - CNLiveUserManagement
310 https://github.com/cocoapods/specs.git: 369 https://github.com/cocoapods/specs.git:
  370 + - AFNetworking
311 - FLAnimatedImage 371 - FLAnimatedImage
312 - Masonry 372 - Masonry
313 - MJExtension 373 - MJExtension
@@ -319,18 +379,26 @@ EXTERNAL SOURCES: @@ -319,18 +379,26 @@ EXTERNAL SOURCES:
319 :path: "../" 379 :path: "../"
320 380
321 SPEC CHECKSUMS: 381 SPEC CHECKSUMS:
322 - CNLiveAVCamera: 7f3eba8eb1827f6e7a5047b0bb9f9f0bf19d1451 382 + AFNetworking: b6f891fdfaed196b46c7a83cf209e09697b94057
  383 + CNLiveAVCamera: bad4d78fa537222e3e0fcc31b19e4930de634104
323 CNLiveBaseKit: 09a97c3411a91270fb68bfe20a1df2cdbcd2c524 384 CNLiveBaseKit: 09a97c3411a91270fb68bfe20a1df2cdbcd2c524
324 - CNLiveCommonCategory: 57cb8422ccf17ba5cc8fffe76851fa828c367d06  
325 - CNLiveCoreMediator: 0b76225bcbbf99427065545e2a7616092ddc8758  
326 - CNLiveDisease: 39bbf8f961684fe70f04ca69111a1b9bdcedc498 385 + CNLiveBusinessTools: b857e84e14bc733bf06d75a058aa703377dfafe0
  386 + CNLiveCommonCategory: 4d061e148d1d85f0fafce51e5d255a517c951210
  387 + CNLiveCommonClass: c60e0443c5b3beaa333d3e51e165c45f5462a241
  388 + CNLiveCoreMediator: 964e2d5ea765d4b1137ff3e8fc72f83bbdf3bb74
  389 + CNLiveCoreMediator_ModuleDiseaseAction: 8c0efd14e4107995ba961d139796d9c411c97911
  390 + CNLiveDisease: 21a578262c766dc1c7ebbb550b3b761239a41314
  391 + CNLiveEnvironmentConfiguration: 732c15a6cb3e33190cffbd14d3d66572e7ea35b1
327 CNLiveImagePickerController: 2be3ac0a75563f5945101ee6e0a787ad2fc15549 392 CNLiveImagePickerController: 2be3ac0a75563f5945101ee6e0a787ad2fc15549
  393 + CNLiveRequestBastKit: 4922b3ef5db96e61e56cabf951db72f5b25ed748
  394 + CNLiveTripartiteManagement: 5fdbdfb7472654e93e3b7dae90cc2b8c679811f8
  395 + CNLiveUserManagement: b0f28a8506d664af5df59af979c61cea9e5ce0e2
328 FLAnimatedImage: 4a0b56255d9b05f18b6dd7ee06871be5d3b89e31 396 FLAnimatedImage: 4a0b56255d9b05f18b6dd7ee06871be5d3b89e31
329 Masonry: 7c429b56da9d4ee0bbb3ed77a5ea710d6a5df39e 397 Masonry: 7c429b56da9d4ee0bbb3ed77a5ea710d6a5df39e
330 MJExtension: 19bc33ce2eee2d319760f5622562cf581a6ff756 398 MJExtension: 19bc33ce2eee2d319760f5622562cf581a6ff756
331 - QMUIKit: 33959d093f48bb64f754ad696c310887a0768c49  
332 - SDWebImage: c5594f1a19c48d526d321e548902b56b479cd508 399 + QMUIKit: d8e5ce25b33d78020fdc504f3762e197a61b9640
  400 + SDWebImage: 3f3f0c02f09798048c47a5ed0a13f17b063572d8
333 401
334 -PODFILE CHECKSUM: 31f3a02ae28a4e7c45ea480d7911df763de8f06d 402 +PODFILE CHECKSUM: 5a155cc771b283b2aa6d92652b809b0580e3632e
335 403
336 COCOAPODS: 1.5.3 404 COCOAPODS: 1.5.3
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/NSDataExtension/NSData+Common.m
@@ -42,58 +42,58 @@ static unsigned char base64EncodeLookup[256] = @@ -42,58 +42,58 @@ static unsigned char base64EncodeLookup[256] =
42 42
43 void *NewBase64Decode(const char *inputBuffer, size_t length, size_t *outputLength) 43 void *NewBase64Decode(const char *inputBuffer, size_t length, size_t *outputLength)
44 { 44 {
45 - if (length == (size_t)-1)  
46 - {  
47 - length = strlen(inputBuffer);  
48 - }  
49 -  
50 - size_t outputBufferSize = 45 + if (length == (size_t)-1)
  46 + {
  47 + length = strlen(inputBuffer);
  48 + }
  49 +
  50 + size_t outputBufferSize =
51 ((length+BASE64_UNIT_SIZE-1) / BASE64_UNIT_SIZE) * BINARY_UNIT_SIZE; 51 ((length+BASE64_UNIT_SIZE-1) / BASE64_UNIT_SIZE) * BINARY_UNIT_SIZE;
52 - unsigned char *outputBuffer = (unsigned char *)malloc(outputBufferSize);  
53 -  
54 - size_t i = 0;  
55 - size_t j = 0;  
56 - while (i < length)  
57 - {  
58 - //  
59 - // Accumulate 4 valid characters (ignore everything else)  
60 - //  
61 - unsigned char accumulated[BASE64_UNIT_SIZE];  
62 - size_t accumulateIndex = 0;  
63 - while (i < length)  
64 - {  
65 - unsigned char decode = base64EncodeLookup[inputBuffer[i++]];  
66 - if (decode != xx)  
67 - {  
68 - accumulated[accumulateIndex] = decode;  
69 - accumulateIndex++;  
70 -  
71 - if (accumulateIndex == BASE64_UNIT_SIZE)  
72 - {  
73 - break;  
74 - }  
75 - }  
76 - }  
77 -  
78 - //  
79 - // Store the 6 bits from each of the 4 characters as 3 bytes  
80 - //  
81 - // (Uses improved bounds checking suggested by Alexandre Colucci)  
82 - //  
83 - if(accumulateIndex >= 2)  
84 - outputBuffer[j] = (unsigned char)(accumulated[0] << 2) | (accumulated[1] >> 4);  
85 - if(accumulateIndex >= 3)  
86 - outputBuffer[j + 1] = (unsigned char)(accumulated[1] << 4) | (accumulated[2] >> 2);  
87 - if(accumulateIndex >= 4)  
88 - outputBuffer[j + 2] = (unsigned char)(accumulated[2] << 6) | accumulated[3];  
89 - j += accumulateIndex - 1;  
90 - }  
91 -  
92 - if (outputLength)  
93 - {  
94 - *outputLength = j;  
95 - }  
96 - return outputBuffer; 52 + unsigned char *outputBuffer = (unsigned char *)malloc(outputBufferSize);
  53 +
  54 + size_t i = 0;
  55 + size_t j = 0;
  56 + while (i < length)
  57 + {
  58 + //
  59 + // Accumulate 4 valid characters (ignore everything else)
  60 + //
  61 + unsigned char accumulated[BASE64_UNIT_SIZE];
  62 + size_t accumulateIndex = 0;
  63 + while (i < length)
  64 + {
  65 + unsigned char decode = base64EncodeLookup[inputBuffer[i++]];
  66 + if (decode != xx)
  67 + {
  68 + accumulated[accumulateIndex] = decode;
  69 + accumulateIndex++;
  70 +
  71 + if (accumulateIndex == BASE64_UNIT_SIZE)
  72 + {
  73 + break;
  74 + }
  75 + }
  76 + }
  77 +
  78 + //
  79 + // Store the 6 bits from each of the 4 characters as 3 bytes
  80 + //
  81 + // (Uses improved bounds checking suggested by Alexandre Colucci)
  82 + //
  83 + if(accumulateIndex >= 2)
  84 + outputBuffer[j] = (unsigned char)(accumulated[0] << 2) | (accumulated[1] >> 4);
  85 + if(accumulateIndex >= 3)
  86 + outputBuffer[j + 1] = (unsigned char)(accumulated[1] << 4) | (accumulated[2] >> 2);
  87 + if(accumulateIndex >= 4)
  88 + outputBuffer[j + 2] = (unsigned char)(accumulated[2] << 6) | accumulated[3];
  89 + j += accumulateIndex - 1;
  90 + }
  91 +
  92 + if (outputLength)
  93 + {
  94 + *outputLength = j;
  95 + }
  96 + return outputBuffer;
97 } 97 }
98 98
99 // 99 //
@@ -103,120 +103,120 @@ void *NewBase64Decode(const char *inputBuffer, size_t length, size_t *outputLeng @@ -103,120 +103,120 @@ void *NewBase64Decode(const char *inputBuffer, size_t length, size_t *outputLeng
103 // output buffer. 103 // output buffer.
104 // 104 //
105 // inputBuffer - the source data for the encode 105 // inputBuffer - the source data for the encode
106 -// length - the length of the input in bytes 106 +// length - the length of the input in bytes
107 // separateLines - if zero, no CR/LF characters will be added. Otherwise 107 // separateLines - if zero, no CR/LF characters will be added. Otherwise
108 -// a CR/LF pair will be added every 64 encoded chars.  
109 -// outputLength - if not-NULL, on output will contain the encoded length  
110 -// (not including terminating 0 char) 108 +// a CR/LF pair will be added every 64 encoded chars.
  109 +// outputLength - if not-NULL, on output will contain the encoded length
  110 +// (not including terminating 0 char)
111 // 111 //
112 // returns the encoded buffer. Must be free'd by caller. Length is given by 112 // returns the encoded buffer. Must be free'd by caller. Length is given by
113 -// outputLength. 113 +// outputLength.
114 // 114 //
115 char *NewBase64Encode(const void *buffer, size_t length, bool separateLines, size_t *outputLength) 115 char *NewBase64Encode(const void *buffer, size_t length, bool separateLines, size_t *outputLength)
116 { 116 {
117 - const unsigned char *inputBuffer = (const unsigned char *)buffer;  
118 - 117 + const unsigned char *inputBuffer = (const unsigned char *)buffer;
  118 +
119 #define MAX_NUM_PADDING_CHARS 2 119 #define MAX_NUM_PADDING_CHARS 2
120 #define OUTPUT_LINE_LENGTH 64 120 #define OUTPUT_LINE_LENGTH 64
121 #define INPUT_LINE_LENGTH ((OUTPUT_LINE_LENGTH / BASE64_UNIT_SIZE) * BINARY_UNIT_SIZE) 121 #define INPUT_LINE_LENGTH ((OUTPUT_LINE_LENGTH / BASE64_UNIT_SIZE) * BINARY_UNIT_SIZE)
122 #define CR_LF_SIZE 2 122 #define CR_LF_SIZE 2
123 -  
124 - //  
125 - // Byte accurate calculation of final buffer size  
126 - //  
127 - size_t outputBufferSize = 123 +
  124 + //
  125 + // Byte accurate calculation of final buffer size
  126 + //
  127 + size_t outputBufferSize =
128 ((length / BINARY_UNIT_SIZE) 128 ((length / BINARY_UNIT_SIZE)
129 + ((length % BINARY_UNIT_SIZE) ? 1 : 0)) 129 + ((length % BINARY_UNIT_SIZE) ? 1 : 0))
130 * BASE64_UNIT_SIZE; 130 * BASE64_UNIT_SIZE;
131 - if (separateLines)  
132 - {  
133 - outputBufferSize += 131 + if (separateLines)
  132 + {
  133 + outputBufferSize +=
134 (outputBufferSize / OUTPUT_LINE_LENGTH) * CR_LF_SIZE; 134 (outputBufferSize / OUTPUT_LINE_LENGTH) * CR_LF_SIZE;
135 - }  
136 -  
137 - //  
138 - // Include space for a terminating zero  
139 - //  
140 - outputBufferSize += 1; 135 + }
141 136
142 - //  
143 - // Allocate the output buffer  
144 - //  
145 - char *outputBuffer = (char *)malloc(outputBufferSize);  
146 - if (!outputBuffer)  
147 - {  
148 - return NULL;  
149 - } 137 + //
  138 + // Include space for a terminating zero
  139 + //
  140 + outputBufferSize += 1;
150 141
151 - size_t i = 0;  
152 - size_t j = 0;  
153 - const size_t lineLength = separateLines ? INPUT_LINE_LENGTH : length;  
154 - size_t lineEnd = lineLength;  
155 -  
156 - while (true)  
157 - {  
158 - if (lineEnd > length)  
159 - {  
160 - lineEnd = length;  
161 - } 142 + //
  143 + // Allocate the output buffer
  144 + //
  145 + char *outputBuffer = (char *)malloc(outputBufferSize);
  146 + if (!outputBuffer)
  147 + {
  148 + return NULL;
  149 + }
  150 +
  151 + size_t i = 0;
  152 + size_t j = 0;
  153 + const size_t lineLength = separateLines ? INPUT_LINE_LENGTH : length;
  154 + size_t lineEnd = lineLength;
  155 +
  156 + while (true)
  157 + {
  158 + if (lineEnd > length)
  159 + {
  160 + lineEnd = length;
  161 + }
162 162
163 - for (; i + BINARY_UNIT_SIZE - 1 < lineEnd; i += BINARY_UNIT_SIZE)  
164 - {  
165 - //  
166 - // Inner loop: turn 48 bytes into 64 base64 characters  
167 - //  
168 - outputBuffer[j++] = (char)base64EncodeLookup[(inputBuffer[i] & 0xFC) >> 2];  
169 - outputBuffer[j++] = (char)base64EncodeLookup[((inputBuffer[i] & 0x03) << 4) 163 + for (; i + BINARY_UNIT_SIZE - 1 < lineEnd; i += BINARY_UNIT_SIZE)
  164 + {
  165 + //
  166 + // Inner loop: turn 48 bytes into 64 base64 characters
  167 + //
  168 + outputBuffer[j++] = (char)base64EncodeLookup[(inputBuffer[i] & 0xFC) >> 2];
  169 + outputBuffer[j++] = (char)base64EncodeLookup[((inputBuffer[i] & 0x03) << 4)
170 | ((inputBuffer[i + 1] & 0xF0) >> 4)]; 170 | ((inputBuffer[i + 1] & 0xF0) >> 4)];
171 - outputBuffer[j++] = (char)base64EncodeLookup[((inputBuffer[i + 1] & 0x0F) << 2) 171 + outputBuffer[j++] = (char)base64EncodeLookup[((inputBuffer[i + 1] & 0x0F) << 2)
172 | ((inputBuffer[i + 2] & 0xC0) >> 6)]; 172 | ((inputBuffer[i + 2] & 0xC0) >> 6)];
173 - outputBuffer[j++] = (char)base64EncodeLookup[inputBuffer[i + 2] & 0x3F];  
174 - }  
175 -  
176 - if (lineEnd == length)  
177 - {  
178 - break;  
179 - }  
180 -  
181 - //  
182 - // Add the newline  
183 - //  
184 - outputBuffer[j++] = '\r';  
185 - outputBuffer[j++] = '\n';  
186 - lineEnd += lineLength;  
187 - }  
188 -  
189 - if (i + 1 < length)  
190 - {  
191 - //  
192 - // Handle the single '=' case  
193 - //  
194 - outputBuffer[j++] = (char)base64EncodeLookup[(inputBuffer[i] & 0xFC) >> 2];  
195 - outputBuffer[j++] = (char)base64EncodeLookup[((inputBuffer[i] & 0x03) << 4) 173 + outputBuffer[j++] = (char)base64EncodeLookup[inputBuffer[i + 2] & 0x3F];
  174 + }
  175 +
  176 + if (lineEnd == length)
  177 + {
  178 + break;
  179 + }
  180 +
  181 + //
  182 + // Add the newline
  183 + //
  184 + outputBuffer[j++] = '\r';
  185 + outputBuffer[j++] = '\n';
  186 + lineEnd += lineLength;
  187 + }
  188 +
  189 + if (i + 1 < length)
  190 + {
  191 + //
  192 + // Handle the single '=' case
  193 + //
  194 + outputBuffer[j++] = (char)base64EncodeLookup[(inputBuffer[i] & 0xFC) >> 2];
  195 + outputBuffer[j++] = (char)base64EncodeLookup[((inputBuffer[i] & 0x03) << 4)
196 | ((inputBuffer[i + 1] & 0xF0) >> 4)]; 196 | ((inputBuffer[i + 1] & 0xF0) >> 4)];
197 - outputBuffer[j++] = (char)base64EncodeLookup[(inputBuffer[i + 1] & 0x0F) << 2];  
198 - outputBuffer[j++] = '=';  
199 - }  
200 - else if (i < length)  
201 - {  
202 - //  
203 - // Handle the double '=' case  
204 - //  
205 - outputBuffer[j++] = (char)base64EncodeLookup[(inputBuffer[i] & 0xFC) >> 2];  
206 - outputBuffer[j++] = (char)base64EncodeLookup[(inputBuffer[i] & 0x03) << 4];  
207 - outputBuffer[j++] = '=';  
208 - outputBuffer[j++] = '=';  
209 - }  
210 - outputBuffer[j] = 0;  
211 -  
212 - //  
213 - // Set the output length and return the buffer  
214 - //  
215 - if (outputLength)  
216 - {  
217 - *outputLength = j;  
218 - }  
219 - return outputBuffer; 197 + outputBuffer[j++] = (char)base64EncodeLookup[(inputBuffer[i + 1] & 0x0F) << 2];
  198 + outputBuffer[j++] = '=';
  199 + }
  200 + else if (i < length)
  201 + {
  202 + //
  203 + // Handle the double '=' case
  204 + //
  205 + outputBuffer[j++] = (char)base64EncodeLookup[(inputBuffer[i] & 0xFC) >> 2];
  206 + outputBuffer[j++] = (char)base64EncodeLookup[(inputBuffer[i] & 0x03) << 4];
  207 + outputBuffer[j++] = '=';
  208 + outputBuffer[j++] = '=';
  209 + }
  210 + outputBuffer[j] = 0;
  211 +
  212 + //
  213 + // Set the output length and return the buffer
  214 + //
  215 + if (outputLength)
  216 + {
  217 + *outputLength = j;
  218 + }
  219 + return outputBuffer;
220 } 220 }
221 221
222 222
@@ -225,25 +225,25 @@ char *NewBase64Encode(const void *buffer, size_t length, bool separateLines, siz @@ -225,25 +225,25 @@ char *NewBase64Encode(const void *buffer, size_t length, bool separateLines, siz
225 225
226 + (NSData *)dataFromBase64String:(NSString *)aString 226 + (NSData *)dataFromBase64String:(NSString *)aString
227 { 227 {
228 - NSData *data = [aString dataUsingEncoding:NSASCIIStringEncoding];  
229 - size_t outputLength;  
230 - void *outputBuffer = NewBase64Decode([data bytes], [data length], &outputLength);  
231 - NSData *result = [NSData dataWithBytes:outputBuffer length:outputLength];  
232 - free(outputBuffer);  
233 - return result; 228 + NSData *data = [aString dataUsingEncoding:NSASCIIStringEncoding];
  229 + size_t outputLength;
  230 + void *outputBuffer = NewBase64Decode([data bytes], [data length], &outputLength);
  231 + NSData *result = [NSData dataWithBytes:outputBuffer length:outputLength];
  232 + free(outputBuffer);
  233 + return result;
234 } 234 }
235 235
236 - (NSString *)base64EncodedString 236 - (NSString *)base64EncodedString
237 { 237 {
238 - size_t outputLength = 0;  
239 - char *outputBuffer = 238 + size_t outputLength = 0;
  239 + char *outputBuffer =
240 NewBase64Encode([self bytes], [self length], false, &outputLength); 240 NewBase64Encode([self bytes], [self length], false, &outputLength);
241 -  
242 -  
243 - NSString *result = [[NSString alloc] initWithBytes:outputBuffer length:outputLength encoding:NSASCIIStringEncoding];  
244 -  
245 - free(outputBuffer);  
246 - return result; 241 +
  242 +
  243 + NSString *result = [[NSString alloc] initWithBytes:outputBuffer length:outputLength encoding:NSASCIIStringEncoding];
  244 +
  245 + free(outputBuffer);
  246 + return result;
247 } 247 }
248 248
249 249
@@ -257,15 +257,15 @@ char *NewBase64Encode(const void *buffer, size_t length, bool separateLines, siz @@ -257,15 +257,15 @@ char *NewBase64Encode(const void *buffer, size_t length, bool separateLines, siz
257 */ 257 */
258 258
259 - (NSString *)md5Hash { 259 - (NSString *)md5Hash {
260 - unsigned char result[CC_MD5_DIGEST_LENGTH];  
261 - CC_MD5([self bytes], (CC_LONG)[self length], result);  
262 -  
263 - return [NSString stringWithFormat:  
264 - @"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",  
265 - result[0], result[1], result[2], result[3], result[4], result[5], result[6], result[7],  
266 - result[8], result[9], result[10], result[11], result[12], result[13], result[14],  
267 - result[15]  
268 - ]; 260 + unsigned char result[CC_MD5_DIGEST_LENGTH];
  261 + CC_MD5([self bytes], (CC_LONG)[self length], result);
  262 +
  263 + return [NSString stringWithFormat:
  264 + @"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
  265 + result[0], result[1], result[2], result[3], result[4], result[5], result[6], result[7],
  266 + result[8], result[9], result[10], result[11], result[12], result[13], result[14],
  267 + result[15]
  268 + ];
269 } 269 }
270 270
271 271
@@ -276,15 +276,15 @@ char *NewBase64Encode(const void *buffer, size_t length, bool separateLines, siz @@ -276,15 +276,15 @@ char *NewBase64Encode(const void *buffer, size_t length, bool separateLines, siz
276 * @returns The SHA1 hash of this data. 276 * @returns The SHA1 hash of this data.
277 */ 277 */
278 - (NSString *)sha1Hash { 278 - (NSString *)sha1Hash {
279 - unsigned char result[CC_SHA1_DIGEST_LENGTH];  
280 - CC_SHA1([self bytes], (CC_LONG)[self length], result);  
281 -  
282 - return [NSString stringWithFormat:  
283 - @"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",  
284 - result[0], result[1], result[2], result[3], result[4], result[5], result[6], result[7],  
285 - result[8], result[9], result[10], result[11], result[12], result[13], result[14],  
286 - result[15], result[16], result[17], result[18], result[19]  
287 - ]; 279 + unsigned char result[CC_SHA1_DIGEST_LENGTH];
  280 + CC_SHA1([self bytes], (CC_LONG)[self length], result);
  281 +
  282 + return [NSString stringWithFormat:
  283 + @"%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x%02x",
  284 + result[0], result[1], result[2], result[3], result[4], result[5], result[6], result[7],
  285 + result[8], result[9], result[10], result[11], result[12], result[13], result[14],
  286 + result[15], result[16], result[17], result[18], result[19]
  287 + ];
288 } 288 }
289 289
290 290
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/NSDateExtension/NSDate+Common.h
@@ -16,6 +16,8 @@ @@ -16,6 +16,8 @@
16 16
17 - (NSString *)shortTimeTextOfDate; 17 - (NSString *)shortTimeTextOfDate;
18 18
  19 +- (NSString *)shortTimeForLiveTextOfDate;
  20 +
19 - (NSString *)timeTextOfDate; 21 - (NSString *)timeTextOfDate;
20 22
21 23
@@ -23,4 +25,12 @@ @@ -23,4 +25,12 @@
23 + (NSDate *)dateFromString:(NSString *)string; 25 + (NSDate *)dateFromString:(NSString *)string;
24 + (NSTimeInterval)pleaseInsertStarTime:(NSString *)starTime andInsertEndTime:(NSString *)endTime; 26 + (NSTimeInterval)pleaseInsertStarTime:(NSString *)starTime andInsertEndTime:(NSString *)endTime;
25 27
  28 +/** 取得月-日 时:分 */
  29 ++ (NSString *)dateStrFromInt:(NSInteger)count;
  30 +
  31 ++ (double)getDateTimeSeconds:(NSDate *)date;
  32 +/*** 毫秒 ***/
  33 ++ (double)getDateTimeSecondsMS:(NSDate *)date;
  34 +
  35 +
26 @end 36 @end
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/NSDateExtension/NSDate+Common.m
@@ -7,7 +7,6 @@ @@ -7,7 +7,6 @@
7 // 7 //
8 8
9 #import "NSDate+Common.h" 9 #import "NSDate+Common.h"
10 -//#import "CNLiveDefinesHeader.h"  
11 10
12 @implementation NSDate (Common) 11 @implementation NSDate (Common)
13 12
@@ -49,9 +48,29 @@ @@ -49,9 +48,29 @@
49 return YES; 48 return YES;
50 } 49 }
51 return NO; 50 return NO;
52 - 51 +
  52 +}
  53 +- (NSString *)shortTimeForLiveTextOfDate
  54 +{
  55 +
  56 + NSString * tempString = @"";
  57 +
  58 + NSTimeInterval interval = fabsl([self timeIntervalSinceDate:[NSDate date]]);
  59 +
  60 + if (interval >= 0 && interval < 60) {
  61 + tempString = [NSString stringWithFormat:@"刚刚"];
  62 + }else if (interval >= 60 && interval < 60*60) {
  63 + tempString = [NSString stringWithFormat:@"%.0f分钟前",fabs(interval/60)];
  64 + }else if (interval >= 60*60 && interval < 24*60*60) {
  65 + tempString = [NSString stringWithFormat:@"%.0f小时前",fabs(interval/3600)];
  66 + }else if (interval >= 24*60*60 && interval < 2*24*60*60) {
  67 + tempString = @"昨天";
  68 + }else{
  69 + tempString = [NSString stringWithFormat:@"%.0f天前",floorf(interval/kDayTimeInterval)];
  70 + }
  71 +
  72 + return tempString;
53 } 73 }
54 -  
55 74
56 - (NSString *)shortTimeTextOfDate 75 - (NSString *)shortTimeTextOfDate
57 { 76 {
@@ -65,7 +84,7 @@ @@ -65,7 +84,7 @@
65 { 84 {
66 // 今天的消息 85 // 今天的消息
67 NSDateFormatter* dateFormat = [[NSDateFormatter alloc] init]; 86 NSDateFormatter* dateFormat = [[NSDateFormatter alloc] init];
68 - [dateFormat setDateFormat:@"aHH:mm"]; 87 + [dateFormat setDateFormat:@"ahh:mm"];
69 [dateFormat setAMSymbol:@"上午"]; 88 [dateFormat setAMSymbol:@"上午"];
70 [dateFormat setPMSymbol:@"下午"]; 89 [dateFormat setPMSymbol:@"下午"];
71 NSString *dateString = [dateFormat stringFromDate:date]; 90 NSString *dateString = [dateFormat stringFromDate:date];
@@ -124,7 +143,7 @@ @@ -124,7 +143,7 @@
124 143
125 // 今天的消息 144 // 今天的消息
126 NSDateFormatter* dateFormat = [[NSDateFormatter alloc] init]; 145 NSDateFormatter* dateFormat = [[NSDateFormatter alloc] init];
127 - [dateFormat setDateFormat:@"aHH:mm"]; 146 + [dateFormat setDateFormat:@"ahh:mm"];
128 [dateFormat setAMSymbol:@"上午"]; 147 [dateFormat setAMSymbol:@"上午"];
129 [dateFormat setPMSymbol:@"下午"]; 148 [dateFormat setPMSymbol:@"下午"];
130 NSString *dateString = [dateFormat stringFromDate:date]; 149 NSString *dateString = [dateFormat stringFromDate:date];
@@ -187,7 +206,7 @@ @@ -187,7 +206,7 @@
187 //NSDate转NSString 206 //NSDate转NSString
188 NSString *currentDateString = [dateFormatter stringFromDate:date]; 207 NSString *currentDateString = [dateFormatter stringFromDate:date];
189 //输出currentDateString 208 //输出currentDateString
190 -// NSLog(@"%@",currentDateString); 209 + // NSLog(@"%@",currentDateString);
191 return currentDateString; 210 return currentDateString;
192 } 211 }
193 212
@@ -211,20 +230,60 @@ @@ -211,20 +230,60 @@
211 return time; 230 return time;
212 } 231 }
213 232
214 -- (NSTimeInterval)pleaseInsertStarTimeo:(NSString *)time1 andInsertEndTime:(NSString *)time2{ 233 +- (void)pleaseInsertStarTimeo:(NSString *)time1 andInsertEndTime:(NSString *)time2{
215 // 1.将时间转换为date 234 // 1.将时间转换为date
216 NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; 235 NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
217 formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss"; 236 formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss";
218 NSDate *date1 = [formatter dateFromString:time1]; 237 NSDate *date1 = [formatter dateFromString:time1];
219 NSDate *date2 = [formatter dateFromString:time2]; 238 NSDate *date2 = [formatter dateFromString:time2];
220 - return date1.timeIntervalSince1970 - date2.timeIntervalSince1970;  
221 -// // 2.创建日历  
222 -// NSCalendar *calendar = [NSCalendar currentCalendar];  
223 -// NSCalendarUnit type = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;  
224 -// // 3.利用日历对象比较两个时间的差值  
225 -// NSDateComponents *cmps = [calendar components:type fromDate:date1 toDate:date2 options:0]; 239 + // 2.创建日历
  240 + NSCalendar *calendar = [NSCalendar currentCalendar];
  241 + NSCalendarUnit type = NSCalendarUnitYear | NSCalendarUnitMonth | NSCalendarUnitDay | NSCalendarUnitHour | NSCalendarUnitMinute | NSCalendarUnitSecond;
  242 + // 3.利用日历对象比较两个时间的差值
  243 + NSDateComponents *cmps = [calendar components:type fromDate:date1 toDate:date2 options:0];
226 // 4.输出结果 244 // 4.输出结果
227 -// NSLog(@"两个时间相差%ld年%ld月%ld日%ld小时%ld分钟%ld秒", (long)[cmps year], (long)cmps.month, (long)cmps.day, (long)cmps.hour, (long)cmps.minute, (long)cmps.second); 245 + NSLog(@"两个时间相差%ld年%ld月%ld日%ld小时%ld分钟%ld秒", cmps.year, cmps.month, cmps.day, cmps.hour, cmps.minute, cmps.second);
  246 +}
  247 +
  248 ++ (NSString *)dateStrFromInt:(NSInteger)count {
  249 +
  250 + NSDate* date = [NSDate dateWithTimeIntervalSince1970:count/1000];//获取date
  251 + NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
  252 + [formatter setDateFormat:@"yyyy"];
  253 + NSInteger year = [[formatter stringFromDate:date] integerValue];
  254 + NSLog(@"输出年 = %02ld",year);
  255 + [formatter setDateFormat:@"MM"];
  256 + NSInteger currentMonth = [[formatter stringFromDate:date]integerValue];
  257 + NSLog(@"输出月份 = %02ld",currentMonth);
  258 + [formatter setDateFormat:@"dd"];
  259 + NSInteger currentDay = [[formatter stringFromDate:date] integerValue];
  260 + NSLog(@"输出月份 = %02ld",currentDay);
  261 + [formatter setDateFormat:@"HH"];
  262 + NSInteger currentTime = [[formatter stringFromDate:date] integerValue];
  263 + NSLog(@"输出月份 = %02ld",currentTime);
  264 + [formatter setDateFormat:@"mm"];
  265 + NSInteger currentSeconds = [[formatter stringFromDate:date] integerValue];
  266 + NSLog(@"输出月份 = %02ld",currentSeconds);
  267 +
  268 + return [NSString stringWithFormat:@"%02ld-%02ld-%02ld %02ld:%02ld",year,currentMonth,currentDay,currentTime,currentSeconds];
  269 +}
  270 +
  271 ++ (double)getDateTimeSeconds:(NSDate *)date{
  272 +
  273 + NSTimeInterval interval = [date timeIntervalSince1970];
  274 + NSLog(@"转换的时间戳=%f",interval);
  275 + double totalMilliseconds = interval;
  276 + return totalMilliseconds;
  277 +
  278 +}
  279 +
  280 ++ (double)getDateTimeSecondsMS:(NSDate *)date{
  281 +
  282 + NSTimeInterval interval = [date timeIntervalSince1970];
  283 + NSLog(@"转换的时间戳=%f",interval);
  284 + double totalMilliseconds = interval;
  285 + return totalMilliseconds *1000;
  286 +
228 } 287 }
229 288
230 @end 289 @end
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/NSDictionaryExtension/NSDictionary+Safety.h
@@ -7,16 +7,15 @@ @@ -7,16 +7,15 @@
7 // 7 //
8 8
9 #import <Foundation/Foundation.h> 9 #import <Foundation/Foundation.h>
10 - 10 +//字典转json格式字符串
  11 +#ifndef CNLiveNSDictionaryDicToJson
  12 +#define CNLiveNSDictionaryDicToJson(dic) [NSDictionary dictionaryToJson:dic]
  13 +#endif
11 @interface NSDictionary (Safety) 14 @interface NSDictionary (Safety)
12 15
13 - (NSDictionary *)validatedDictionary; 16 - (NSDictionary *)validatedDictionary;
14 17
15 -//字典转json格式字符串:  
16 -- (NSString *)dictionaryToJson;  
17 -  
18 -//- (NSDictionary *)addParameters;  
19 -//  
20 -//+ (NSDictionary *)CommonParameters; 18 +//字典转json格式字符串
  19 ++ (NSString *)dictionaryToJson:(NSDictionary *)dic;
21 20
22 @end 21 @end
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/NSDictionaryExtension/NSDictionary+Safety.m
@@ -44,30 +44,10 @@ @@ -44,30 +44,10 @@
44 } 44 }
45 45
46 //字典转json格式字符串: 46 //字典转json格式字符串:
47 -- (NSString *)dictionaryToJson 47 ++ (NSString *)dictionaryToJson:(NSDictionary *)dic
48 { 48 {
49 NSError *parseError = nil; 49 NSError *parseError = nil;
50 - NSData *jsonData = [NSJSONSerialization dataWithJSONObject:self options:NSJSONWritingPrettyPrinted error:&parseError]; 50 + NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dic options:NSJSONWritingPrettyPrinted error:&parseError];
51 return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding]; 51 return [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
52 } 52 }
53 -  
54 -//- (NSDictionary *)addParameters  
55 -//{  
56 -// if (![self isKindOfClass:[NSDictionary class]]) {  
57 -// return self;  
58 -// }  
59 -// if (!self) {  
60 -// return @{@"appid": AppId, @"plat": @"i", @"version": AppVersion};  
61 -// } else {  
62 -// NSMutableDictionary *dic = [[NSMutableDictionary alloc] initWithDictionary:self];  
63 -// [dic addEntriesFromDictionary:@{@"appid": AppId, @"plat": @"i", @"version": AppVersion}];  
64 -// return [[NSDictionary alloc] initWithDictionary:dic];  
65 -// }  
66 -//}  
67 -//  
68 -//+ (NSDictionary *)CommonParameters  
69 -//{  
70 -// return @{@"appid": AppId, @"plat": @"i", @"version": AppVersion};  
71 -//}  
72 -  
73 @end 53 @end
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/NSObjectExtension/NSObject+KVOCategory.h
@@ -9,7 +9,7 @@ @@ -9,7 +9,7 @@
9 9
10 10
11 11
12 -#if kSupportNSObjectKVOCategory 12 +//#if kSupportNSObjectKVOCategory
13 #import <Foundation/Foundation.h> 13 #import <Foundation/Foundation.h>
14 14
15 @interface NSObject (KVOCategory) 15 @interface NSObject (KVOCategory)
@@ -22,4 +22,4 @@ @@ -22,4 +22,4 @@
22 - (void)cancelObservedBy:(NSObject *)observer forKeyPaths:(NSArray *)keyPaths; 22 - (void)cancelObservedBy:(NSObject *)observer forKeyPaths:(NSArray *)keyPaths;
23 23
24 @end 24 @end
25 -#endif 25 +//#endif
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/NSObjectExtension/NSObject+KVOCategory.m
@@ -5,7 +5,7 @@ @@ -5,7 +5,7 @@
5 // Created by Alexi on 5/16/14. 5 // Created by Alexi on 5/16/14.
6 // Copyright (c) 2014 Alexi. All rights reserved. 6 // Copyright (c) 2014 Alexi. All rights reserved.
7 // 7 //
8 -#if kSupportNSObjectKVOCategory 8 +//#if kSupportNSObjectKVOCategory
9 #import "NSObject+KVOCategory.h" 9 #import "NSObject+KVOCategory.h"
10 10
11 @implementation NSObject (KVOCategory) 11 @implementation NSObject (KVOCategory)
@@ -38,4 +38,4 @@ @@ -38,4 +38,4 @@
38 } 38 }
39 39
40 @end 40 @end
41 -#endif  
42 \ No newline at end of file 41 \ No newline at end of file
  42 +//#endif
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/NSStringExtension/NSString+Category.h
@@ -6,6 +6,41 @@ @@ -6,6 +6,41 @@
6 // 6 //
7 7
8 #import <Foundation/Foundation.h> 8 #import <Foundation/Foundation.h>
  9 +//获取字符串首字母(传入汉字字符串, 返回大写拼音首字母)
  10 +#ifndef CNLiveStringGetFirstLetter
  11 +#define CNLiveStringGetFirstLetter(string) [string getFirstLetterFromString]
  12 +#endif
  13 +
  14 +//正则表达式验证手机号
  15 +#ifndef CNLiveStringIsMobileNumber
  16 +#define CNLiveStringIsMobileNumber(string) [string isMobileNumber]
  17 +#endif
  18 +
  19 +//读取本地JSON文件
  20 +#ifndef CNLiveStringReadLocalJSONFile
  21 +#define CNLiveStringReadLocalJSONFile(string) [string readLocalFile]
  22 +#endif
  23 +
  24 +//获取汉字转成拼音字符串 通讯录模糊搜索 支持拼音检索 首字母 全拼 汉字
  25 +#ifndef CNLiveStringTransformToPinyin
  26 +#define CNLiveStringTransformToPinyin(string) [string transformToPinyin]
  27 +#endif
  28 +
  29 +//判断是否为纯数字
  30 +#ifndef CNLiveStringIsNumber
  31 +#define CNLiveStringIsNumber(string) [NSString isNum:string]
  32 +#endif
  33 +
  34 +#ifndef CNLiveStringSpecialSpaceCharactCers
  35 +#define CNLiveStringSpecialSpaceCharactCers [NSString getSpecialSpaceCharactCerS]
  36 +#endif
  37 +
  38 +#ifndef CNLiveStringgetLocalAppVersion
  39 +#define CNLiveStringgetLocalAppVersion [NSString getLocalAppVersion]
  40 +#endif
  41 +#ifndef CNLiveStringgetLocalAppBuildVersion
  42 +#define CNLiveStringgetLocalAppBuildVersion [NSString getLocalAppBuildVersion]
  43 +#endif
9 44
10 NS_ASSUME_NONNULL_BEGIN 45 NS_ASSUME_NONNULL_BEGIN
11 46
@@ -17,6 +52,7 @@ NS_ASSUME_NONNULL_BEGIN @@ -17,6 +52,7 @@ NS_ASSUME_NONNULL_BEGIN
17 //正则表达式验证手机号 52 //正则表达式验证手机号
18 - (BOOL)isMobileNumber; 53 - (BOOL)isMobileNumber;
19 54
  55 +//读取本地JSON文件
20 - (id)readLocalFile; 56 - (id)readLocalFile;
21 57
22 //获取汉字转成拼音字符串 通讯录模糊搜索 支持拼音检索 首字母 全拼 汉字 58 //获取汉字转成拼音字符串 通讯录模糊搜索 支持拼音检索 首字母 全拼 汉字
@@ -24,6 +60,16 @@ NS_ASSUME_NONNULL_BEGIN @@ -24,6 +60,16 @@ NS_ASSUME_NONNULL_BEGIN
24 60
25 //获取文件大大小 61 //获取文件大大小
26 - (float)fileSizeAtPath; 62 - (float)fileSizeAtPath;
  63 +
  64 +/** 判断是否为纯数字 */
  65 ++ (BOOL)isNum:(NSString *)checkedNumString;
  66 +
  67 +// 获取特殊空白字符
  68 ++ (NSString *)getSpecialSpaceCharactCerS;
  69 +//获取 bundle version短版本号
  70 ++ (NSString*)getLocalAppVersion;
  71 +// 获取 build version长版本号
  72 ++ (NSString*)getLocalAppBuildVersion;
27 @end 73 @end
28 74
29 NS_ASSUME_NONNULL_END 75 NS_ASSUME_NONNULL_END
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/NSStringExtension/NSString+Category.m
@@ -42,6 +42,7 @@ @@ -42,6 +42,7 @@
42 - (id)readLocalFile { 42 - (id)readLocalFile {
43 NSString *path = [[NSBundle mainBundle] pathForResource:self ofType:@"json"]; 43 NSString *path = [[NSBundle mainBundle] pathForResource:self ofType:@"json"];
44 NSData *data = [[NSData alloc] initWithContentsOfFile:path]; 44 NSData *data = [[NSData alloc] initWithContentsOfFile:path];
  45 + if (data == nil)return nil;
45 return [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]; 46 return [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil];
46 } 47 }
47 48
@@ -93,4 +94,32 @@ @@ -93,4 +94,32 @@
93 return 0.0; 94 return 0.0;
94 } 95 }
95 } 96 }
  97 +
  98 +/** 判断是否为纯数字 */
  99 ++ (BOOL)isNum:(NSString *)checkedNumString {
  100 + checkedNumString = [checkedNumString stringByTrimmingCharactersInSet:[NSCharacterSet decimalDigitCharacterSet]];
  101 + if(checkedNumString.length > 0) {
  102 + return NO;
  103 + }
  104 + return YES;
  105 +}
  106 +
  107 +#pragma mark 获取特殊空白字符
  108 ++ (NSString *)getSpecialSpaceCharactCerS{
  109 + int asciiCode = 8197;
  110 + NSString *string1 = [NSString stringWithFormat:@"%C", (unichar)asciiCode];
  111 + return string1;
  112 +}
  113 +
  114 +#pragma mark - 获取 bundle version短版本号
  115 ++ (NSString*)getLocalAppVersion
  116 +{
  117 + return [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleShortVersionString"];
  118 +}
  119 +
  120 +#pragma mark -获取 build version长版本号
  121 ++ (NSString*)getLocalAppBuildVersion
  122 +{
  123 + return [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleVersion"];//@"1.3.5.18.07.25.30";//
  124 +}
96 @end 125 @end
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/NSStringExtension/NSString+RegexCheck.m
@@ -28,7 +28,7 @@ @@ -28,7 +28,7 @@
28 { 28 {
29 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; 29 NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
30 [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; 30 [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
31 -// [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:8]]; 31 + // [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:8]];
32 NSTimeInterval oldTime = [[dateFormatter dateFromString:self] timeIntervalSince1970]; 32 NSTimeInterval oldTime = [[dateFormatter dateFromString:self] timeIntervalSince1970];
33 NSTimeInterval currentTime = [[NSDate date] timeIntervalSince1970]; 33 NSTimeInterval currentTime = [[NSDate date] timeIntervalSince1970];
34 return oldTime <= currentTime; 34 return oldTime <= currentTime;
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/NSStringExtension/NSString+Size.h
@@ -21,7 +21,4 @@ @@ -21,7 +21,4 @@
21 21
22 - (CGSize)tt_sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(NSLineBreakMode)lineBreakMode lineSpace:(CGFloat)lineSpace; 22 - (CGSize)tt_sizeWithFont:(UIFont *)font constrainedToSize:(CGSize)size lineBreakMode:(NSLineBreakMode)lineBreakMode lineSpace:(CGFloat)lineSpace;
23 23
24 -//规范字符串  
25 --(NSString *)specificationString:(NSString *)string;  
26 -  
27 @end 24 @end
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/NSStringExtension/NSString+Size.m
@@ -9,14 +9,7 @@ @@ -9,14 +9,7 @@
9 #import "NSString+Size.h" 9 #import "NSString+Size.h"
10 10
11 @implementation NSString (Size) 11 @implementation NSString (Size)
12 --(NSString *)specificationString:(NSString *)string  
13 -{  
14 -// NSString * tempString = nil;  
15 -// for (int i=0; i<string.length; i++) {  
16 -//  
17 -// }  
18 - return nil;  
19 -} 12 +
20 - (CGSize)tt_sizeWithFont:(UIFont *)font 13 - (CGSize)tt_sizeWithFont:(UIFont *)font
21 { 14 {
22 CGSize textSize = [self sizeWithAttributes:@{NSFontAttributeName : font}]; 15 CGSize textSize = [self sizeWithAttributes:@{NSFontAttributeName : font}];
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/NSStringExtension/NSString+UrlEncode.m
@@ -60,3 +60,4 @@ @@ -60,3 +60,4 @@
60 } 60 }
61 61
62 @end 62 @end
  63 +
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/UIButtonExtension/UIButton+CNCountDownButton.h deleted 100644 → 0
1 -//  
2 -// UIButton+CNCountDownButton.h  
3 -// com.cnlive.pro.CNLiveNetAdd  
4 -//  
5 -// Created by 流诗语 on 2018/4/10.  
6 -// Copyright © 2018年 cnlive. All rights reserved.  
7 -//  
8 -  
9 -#import <UIKit/UIKit.h>  
10 -  
11 -@interface UIButton (CNCountDownButton)  
12 -/**  
13 - * 倒计时结束的回调  
14 - */  
15 -@property (nonatomic, copy) void(^buttonTimeStoppedCallback)(void);  
16 -  
17 -/**  
18 - 设置倒计时的间隔和倒计时文案  
19 -  
20 - @param duration 倒计时时间  
21 - @param format 可选,传nil默认为 @"%zd秒"  
22 - */  
23 -- (void)CountDownWithTimeInterval:(NSTimeInterval)duration  
24 - countDownFormat:(NSString *)format;  
25 -  
26 -/**  
27 - * invalidate timer  
28 - */  
29 -- (void)cancelTimer;  
30 -@end  
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/UIButtonExtension/UIButton+CNCountDownButton.m deleted 100644 → 0
1 -  
2 -//  
3 -// UIButton+CNCountDownButton.m  
4 -// com.cnlive.pro.CNLiveNetAdd  
5 -//  
6 -// Created by 流诗语 on 2018/4/10.  
7 -// Copyright © 2018年 cnlive. All rights reserved.  
8 -//  
9 -  
10 -#import "UIButton+CNCountDownButton.h"  
11 -#import <objc/runtime.h>  
12 -  
13 -@interface UIButton ()  
14 -  
15 -@property (nonatomic, assign) NSTimeInterval leaveTime;  
16 -@property (nonatomic, copy) NSString *normalTitle;  
17 -@property (nonatomic, copy) NSString *countDownFormat;  
18 -@property (nonatomic, strong) dispatch_source_t timer;  
19 -  
20 -@end  
21 -  
22 -static NSString * const ktimer = @"timer";  
23 -static NSString * const kleaveTime = @"leaveTime";  
24 -static NSString * const kcountDownFormat = @"countDownFormat";  
25 -static NSString * const kButtonTimeStoppedCallback = @"buttonTimeStoppedCallback";  
26 -static NSString * const knormalTitle = @"normalTitle";  
27 -  
28 -@implementation UIButton (CNCountDownButton)  
29 -- (void)setTimer:(dispatch_source_t)timer {  
30 - [self willChangeValueForKey:ktimer];  
31 - objc_setAssociatedObject(self, &ktimer,  
32 - timer,  
33 - OBJC_ASSOCIATION_RETAIN_NONATOMIC);  
34 - [self didChangeValueForKey:ktimer];  
35 -}  
36 -  
37 -- (dispatch_source_t)timer {  
38 - return objc_getAssociatedObject(self, &ktimer);  
39 -}  
40 -  
41 -- (void)setLeaveTime:(NSTimeInterval)leaveTime {  
42 - [self willChangeValueForKey:kleaveTime];  
43 - objc_setAssociatedObject(self, &kleaveTime,  
44 - @(leaveTime),  
45 - OBJC_ASSOCIATION_RETAIN_NONATOMIC);  
46 - [self didChangeValueForKey:kleaveTime];  
47 -}  
48 -  
49 -- (NSTimeInterval)leaveTime {  
50 - return [objc_getAssociatedObject(self, &kleaveTime) doubleValue];  
51 -}  
52 -  
53 -- (void)setCountDownFormat:(NSString *)countDownFormat {  
54 - [self willChangeValueForKey:kcountDownFormat];  
55 - objc_setAssociatedObject(self, &kcountDownFormat,  
56 - countDownFormat,  
57 - OBJC_ASSOCIATION_RETAIN_NONATOMIC);  
58 - [self didChangeValueForKey:kcountDownFormat];  
59 -}  
60 -  
61 -- (NSString *)countDownFormat {  
62 - return objc_getAssociatedObject(self, &kcountDownFormat);  
63 -}  
64 -  
65 -- (void)setButtonTimeStoppedCallback:(void (^)(void))buttonTimeStoppedCallback {  
66 - [self willChangeValueForKey:kButtonTimeStoppedCallback];  
67 - objc_setAssociatedObject(self, &kButtonTimeStoppedCallback,  
68 - buttonTimeStoppedCallback,  
69 - OBJC_ASSOCIATION_RETAIN_NONATOMIC);  
70 - [self didChangeValueForKey:kButtonTimeStoppedCallback];  
71 -}  
72 -  
73 -- (void (^)(void))buttonTimeStoppedCallback {  
74 - return objc_getAssociatedObject(self, &kButtonTimeStoppedCallback);  
75 -}  
76 -  
77 -- (void)setNormalTitle:(NSString *)normalTitle {  
78 - [self willChangeValueForKey:knormalTitle];  
79 - objc_setAssociatedObject(self, &knormalTitle,  
80 - normalTitle,  
81 - OBJC_ASSOCIATION_RETAIN_NONATOMIC);  
82 - [self didChangeValueForKey:knormalTitle];  
83 -}  
84 -  
85 -- (NSString *)normalTitle {  
86 - return objc_getAssociatedObject(self, &knormalTitle);  
87 -}  
88 -  
89 -#pragma mark - 设置函数  
90 -  
91 -- (void)CountDownWithTimeInterval:(NSTimeInterval)duration countDownFormat:(NSString *)format{  
92 - if (!format){  
93 - self.countDownFormat = @"%zd秒";  
94 - } else {  
95 - self.countDownFormat = format;  
96 - }  
97 - self.normalTitle = self.titleLabel.text;  
98 - __block NSInteger timeOut = duration; //倒计时时间  
99 - __weak typeof(self) weakSelf = self;  
100 - dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);  
101 - self.timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0,queue);  
102 - dispatch_source_set_timer(self.timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒执行  
103 - dispatch_source_set_event_handler(self.timer, ^{  
104 - if (timeOut <= 0) { // 倒计时结束,关闭  
105 - [weakSelf cancelTimer];  
106 - } else {  
107 - NSString *title = [NSString stringWithFormat:weakSelf.countDownFormat,timeOut];  
108 - dispatch_async(dispatch_get_main_queue(), ^{  
109 - [weakSelf setTitle:title forState:UIControlStateNormal];  
110 - });  
111 - timeOut--;  
112 - }  
113 - });  
114 - dispatch_resume(self.timer);  
115 -}  
116 -  
117 -- (void)cancelTimer {  
118 - if (self.timer == nil) return;  
119 - dispatch_source_cancel(self.timer);  
120 - self.timer = nil;  
121 - dispatch_async(dispatch_get_main_queue(), ^{  
122 - // 设置界面的按钮显示 根据自己需求设置  
123 - [self setTitle:self.normalTitle forState:UIControlStateNormal];  
124 - self.userInteractionEnabled = YES;  
125 - if (self.buttonTimeStoppedCallback) { self.buttonTimeStoppedCallback(); }  
126 - });  
127 -}  
128 -@end  
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/UIButtonExtension/UIButton+createButton.h
@@ -13,33 +13,6 @@ @@ -13,33 +13,6 @@
13 #pragma mark - public method 13 #pragma mark - public method
14 14
15 /** 15 /**
16 - 创建UIButton,圆角,边框宽度及颜色,文字及其颜色,字号,对齐方式  
17 -  
18 - @param title 文字  
19 - @param titleColor 文字颜色  
20 - @param labelFontSize 字体字号  
21 - @param labelTextAlginment 文字对齐方式  
22 - @param cornerRadius 圆角颁奖  
23 - @param borderWidth 边框宽度  
24 - @param borderColor 边框颜色  
25 - @return 自定义的UIButton  
26 - */  
27 -+ (UIButton * _Nullable)buttonWithTitle:(NSString * _Nullable)title titleColor:(UIColor * _Nullable)titleColor labelFontSize:(CGFloat)labelFontSize labelTextAlginment:(NSTextAlignment)labelTextAlginment cornerRadius:(CGFloat)cornerRadius borderWidth:(CGFloat)borderWidth borderColor:(UIColor * _Nullable)borderColor;  
28 -  
29 -/**  
30 - 创建UIButton,圆角,边框宽度及颜色,文字及其颜色,字号  
31 -  
32 - @param title 文字  
33 - @param titleColor 文字颜色  
34 - @param labelFontSize 字体字号  
35 - @param cornerRadius 圆角半径  
36 - @param borderWidth 边框宽度  
37 - @param borderColor 边框颜色  
38 - @return 自定义的UIButton  
39 - */  
40 -+ (UIButton * _Nullable)buttonWithTitle:(NSString * _Nullable)title titleColor:(UIColor * _Nullable)titleColor labelFontSize:(CGFloat)labelFontSize cornerRadius:(CGFloat)cornerRadius borderWidth:(CGFloat)borderWidth borderColor:(UIColor * _Nullable)borderColor;  
41 -  
42 -/**  
43 创建UIButton,文字及其颜色,字体字号 16 创建UIButton,文字及其颜色,字体字号
44 17
45 @param title 文字 18 @param title 文字
@@ -48,95 +21,43 @@ @@ -48,95 +21,43 @@
48 @return 自定义的UIButton 21 @return 自定义的UIButton
49 */ 22 */
50 + (UIButton * _Nullable)buttonWithTitle:(NSString * _Nullable)title titleColor:(UIColor * _Nullable)titleColor labelFontSize:(CGFloat)labelFontSize; 23 + (UIButton * _Nullable)buttonWithTitle:(NSString * _Nullable)title titleColor:(UIColor * _Nullable)titleColor labelFontSize:(CGFloat)labelFontSize;
51 -  
52 /** 24 /**
53 - 创建UIButton,背景颜色,圆角,边框宽度及颜色,文字,文字颜色  
54 -  
55 - @param title 文字  
56 - @param titleColor 文字颜色  
57 - @param cornerRadius 圆角半径  
58 - @param borderWidth 边框宽度  
59 - @param borderColor 边框颜色  
60 - @param backgroundColor 背景颜色  
61 - @return 自定义的UIButton  
62 - */  
63 -+ (UIButton * _Nullable)buttonWithTitle:(NSString * _Nullable)title titleColor:(UIColor * _Nullable)titleColor cornerRadius:(CGFloat)cornerRadius borderWidth:(CGFloat)borderWidth borderColor:(UIColor * _Nullable)borderColor backgroundColor:(UIColor * _Nullable)backgroundColor;  
64 -  
65 -/**  
66 - 创建UIButton,高亮背景,圆角,边框颜色及宽度,文字及其颜色,字号,对齐方式  
67 -  
68 - @param title 文字  
69 - @param titleColor 文字颜色  
70 - @param labelFontSize 字体字号  
71 - @param labelTextAlginment 文字对齐方式  
72 - @param cornerRadius 圆角半径  
73 - @param borderWidth 边框宽度  
74 - @param borderColor 边框颜色  
75 - @param backgroundImageHighlight 高亮状态下的背景图片  
76 - @return 自定义的UIButton  
77 - */  
78 -+ (UIButton * _Nullable)buttonWithTitle:(NSString * _Nullable)title titleColor:(UIColor * _Nullable)titleColor labelFontSize:(CGFloat)labelFontSize labelTextAlginment:(NSTextAlignment)labelTextAlginment cornerRadius:(CGFloat)cornerRadius borderWidth:(CGFloat)borderWidth borderColor:(UIColor * _Nullable)borderColor backgroundImageHighlight:(UIImage * _Nullable)backgroundImageHighlight;  
79 -  
80 -/**  
81 - 创建UIButton,正常和高亮的背景图片,圆角半径,文字及其颜色,字号  
82 -  
83 - @param title 文字  
84 - @param titleColor 文字颜色  
85 - @param labelFontSize 字体字号  
86 - @param cornerRadius 圆角半径  
87 - @param backgroundImageNormal 正常状态下的背景图片  
88 - @param backgroundImageHighlight 高亮状态下的背景图片  
89 - @return 自定义的UIButton 25 + 设置热区
90 */ 26 */
91 -+ (UIButton * _Nullable)buttonWithTitle:(NSString * _Nullable)title titleColor:(UIColor * _Nullable)titleColor labelFontSize:(CGFloat)labelFontSize cornerRadius:(CGFloat)cornerRadius backgroundImageNormal:(UIImage * _Nullable)backgroundImageNormal backgroundImageHighlight:(UIImage * _Nullable)backgroundImageHighlight; 27 +@property (nonatomic, assign) UIEdgeInsets touchAreaInsets;
92 28
93 /** 29 /**
94 - 创建UIButton,正常状态下的图片,圆角半径  
95 -  
96 - @param imageNormal 正常状态下的图片  
97 - @param cornerRadius 圆角半径  
98 - @return 自定义的UIButton  
99 - */  
100 -+ (UIButton * _Nullable)buttonWithImageNormal:(UIImage * _Nullable)imageNormal cornerRadius:(CGFloat)cornerRadius; 30 + 扩大点击范围
101 31
102 -/**  
103 - 创建UIButton,正常状态下的图片  
104 -  
105 - @param imageNormal 正常状态下的图片  
106 - @return 自定义的UIButton 32 + @param top top
  33 + @param right right
  34 + @param bottom bottom
  35 + @param left left
107 */ 36 */
108 -+ (UIButton * _Nullable)buttonWithImageNormal:(UIImage * _Nullable)imageNormal; 37 +- (void)setEnlargeEdgeWithTop:(CGFloat)top right:(CGFloat)right bottom:(CGFloat)bottom left:(CGFloat)left;
109 38
110 /** 39 /**
111 - 创建UIButton,正常和选中状态的图片  
112 -  
113 - @param imageNormal 正常状态下的图片  
114 - @param imageSelected 选中状态下的图片  
115 - @return 自定义的UIButton 40 + * 倒计时结束的回调
116 */ 41 */
117 -+ (UIButton * _Nullable)buttonWithImageNormal:(UIImage * _Nullable)imageNormal imageSelected:(UIImage * _Nullable)imageSelected; 42 +@property (nonatomic, copy) void(^buttonTimeStoppedCallback)(void);
118 43
119 /** 44 /**
120 - 创建UIButton,正常和选中下背景图片 45 + 设置倒计时的间隔和倒计时文案
121 46
122 - @param backgroundImageNormal 正常状态下的背景图片  
123 - @param backgroundImageSelected 选择状态下的背景图片  
124 - @return 自定义的UIButton 47 + @param duration 倒计时时间
  48 + @param format 可选,传nil默认为 @"%zd秒"
125 */ 49 */
126 -+ (UIButton * _Nullable)buttonWithBackgroundImageNormal:(UIImage * _Nullable)backgroundImageNormal backgroundImageSelected:(UIImage * _Nullable)backgroundImageSelected; 50 +- (void)CountDownWithTimeInterval:(NSTimeInterval)duration
  51 + countDownFormat:(NSString *)format;
127 52
128 /** 53 /**
129 - 设置热区 54 + * invalidate timer
130 */ 55 */
131 -@property (nonatomic, assign) UIEdgeInsets touchAreaInsets;  
132 -  
133 -/**  
134 - 扩大点击范围 56 +- (void)cancelTimer;
  57 +/**开始菊花框*/
  58 +- (void)startButtonActivityIndicatorView:(UIActivityIndicatorViewStyle)style;
135 59
136 - @param top top  
137 - @param right right  
138 - @param bottom bottom  
139 - @param left left  
140 - */  
141 -- (void)setEnlargeEdgeWithTop:(CGFloat)top right:(CGFloat)right bottom:(CGFloat)bottom left:(CGFloat)left; 60 +/**停止菊花框旋转,内容需要重新赋值*/
  61 +- (void)endButtonActivityIndicatorView;
142 @end 62 @end
  63 +
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/UIButtonExtension/UIButton+createButton.m
@@ -17,7 +17,19 @@ @@ -17,7 +17,19 @@
17 #define DefaultCornerRadius 0 17 #define DefaultCornerRadius 0
18 #define DefaultBorderWidth 0 18 #define DefaultBorderWidth 0
19 #define DefaultBorderColor nil 19 #define DefaultBorderColor nil
20 - 20 +static NSUInteger const indicatorViewTag = 9999;
  21 +static NSString * const ktimer = @"timer";
  22 +static NSString * const kleaveTime = @"leaveTime";
  23 +static NSString * const kcountDownFormat = @"countDownFormat";
  24 +static NSString * const kButtonTimeStoppedCallback = @"buttonTimeStoppedCallback";
  25 +static NSString * const knormalTitle = @"normalTitle";
  26 +
  27 +@interface UIButton ()
  28 +@property (nonatomic, assign) NSTimeInterval leaveTime;
  29 +@property (nonatomic, copy) NSString *normalTitle;
  30 +@property (nonatomic, copy) NSString *countDownFormat;
  31 +@property (nonatomic, strong) dispatch_source_t timer;
  32 +@end
21 33
22 34
23 @implementation UIButton (createButton) 35 @implementation UIButton (createButton)
@@ -29,41 +41,8 @@ static char leftNameKey; @@ -29,41 +41,8 @@ static char leftNameKey;
29 #pragma mark - public method 41 #pragma mark - public method
30 42
31 /** 43 /**
32 - 创建UIButton,圆角,边框宽度及颜色,文字及其颜色,字号,对齐方式  
33 -  
34 - @param title 文字  
35 - @param titleColor 文字颜色  
36 - @param labelFontSize 字体字号  
37 - @param labelTextAlginment 文字对齐方式  
38 - @param cornerRadius 圆角颁奖  
39 - @param borderWidth 边框宽度  
40 - @param borderColor 边框颜色  
41 - @return 自定义的UIButton  
42 - */  
43 -+ (UIButton * _Nullable)buttonWithTitle:(NSString * _Nullable)title titleColor:(UIColor * _Nullable)titleColor labelFontSize:(CGFloat)labelFontSize labelTextAlginment:(NSTextAlignment)labelTextAlginment cornerRadius:(CGFloat)cornerRadius borderWidth:(CGFloat)borderWidth borderColor:(UIColor * _Nullable)borderColor  
44 -{  
45 - return [self createButtonWithTitle:title titleColor:titleColor labelFontSize:labelFontSize labelTextAlginment:labelTextAlginment cornerRadius:cornerRadius borderWidth:borderWidth borderColor:borderColor backgroundColor:DefaultBackgroundColor backgroundImageNormal:DefaultBackgroundImageNormal backgroundImageSelected:DefaultBackgroundImageSelected backgroundImageHighlight: DefaultBackgroundImageHighlight];  
46 -}  
47 -  
48 -/**  
49 - 创建UIButton,圆角,边框宽度及颜色,文字及其颜色,字号  
50 -  
51 - @param title 文字  
52 - @param titleColor 文字颜色  
53 - @param labelFontSize 字体字号  
54 - @param cornerRadius 圆角半径  
55 - @param borderWidth 边框宽度  
56 - @param borderColor 边框颜色  
57 - @return 自定义的UIButton  
58 - */  
59 -+ (UIButton * _Nullable)buttonWithTitle:(NSString * _Nullable)title titleColor:(UIColor * _Nullable)titleColor labelFontSize:(CGFloat)labelFontSize cornerRadius:(CGFloat)cornerRadius borderWidth:(CGFloat)borderWidth borderColor:(UIColor * _Nullable)borderColor  
60 -{  
61 - return [self createButtonWithTitle:title titleColor:titleColor labelFontSize:labelFontSize labelTextAlginment:DefaultTextAlignment cornerRadius:cornerRadius borderWidth:borderWidth borderColor:borderColor backgroundColor:DefaultBackgroundColor backgroundImageNormal:DefaultBackgroundImageNormal backgroundImageSelected:DefaultBackgroundImageSelected backgroundImageHighlight: DefaultBackgroundImageHighlight];  
62 -}  
63 -  
64 -/**  
65 创建UIButton,文字及其颜色,字体字号 44 创建UIButton,文字及其颜色,字体字号
66 - 45 +
67 @param title 文字 46 @param title 文字
68 @param titleColor 文字颜色 47 @param titleColor 文字颜色
69 @param labelFontSize 字体字号 48 @param labelFontSize 字体字号
@@ -71,124 +50,12 @@ static char leftNameKey; @@ -71,124 +50,12 @@ static char leftNameKey;
71 */ 50 */
72 + (UIButton * _Nullable)buttonWithTitle:(NSString * _Nullable)title titleColor:(UIColor * _Nullable)titleColor labelFontSize:(CGFloat)labelFontSize 51 + (UIButton * _Nullable)buttonWithTitle:(NSString * _Nullable)title titleColor:(UIColor * _Nullable)titleColor labelFontSize:(CGFloat)labelFontSize
73 { 52 {
74 - return [self createButtonWithTitle:title titleColor:titleColor labelFontSize:labelFontSize labelTextAlginment:DefaultTextAlignment cornerRadius:DefaultCornerRadius borderWidth:DefaultBorderWidth borderColor:DefaultBorderColor backgroundColor:DefaultBackgroundColor backgroundImageNormal:DefaultBackgroundImageNormal backgroundImageSelected:DefaultBackgroundImageSelected backgroundImageHighlight: DefaultBackgroundImageHighlight];  
75 -}  
76 -  
77 -/**  
78 - 创建UIButton,背景颜色,圆角,边框宽度及颜色,文字,文字颜色  
79 -  
80 - @param title 文字  
81 - @param titleColor 文字颜色  
82 - @param cornerRadius 圆角半径  
83 - @param borderWidth 边框宽度  
84 - @param borderColor 边框颜色  
85 - @param backgroundColor 背景颜色  
86 - @return 自定义的UIButton  
87 - */  
88 -+ (UIButton * _Nullable)buttonWithTitle:(NSString * _Nullable)title titleColor:(UIColor * _Nullable)titleColor cornerRadius:(CGFloat)cornerRadius borderWidth:(CGFloat)borderWidth borderColor:(UIColor * _Nullable)borderColor backgroundColor:(UIColor * _Nullable)backgroundColor  
89 -{  
90 - return [self createButtonWithTitle:title titleColor:titleColor labelFontSize:DefaultSystemFontSize labelTextAlginment:DefaultTextAlignment cornerRadius:cornerRadius borderWidth:borderWidth borderColor:borderColor backgroundColor:backgroundColor backgroundImageNormal:DefaultBackgroundImageNormal backgroundImageSelected:DefaultBackgroundImageSelected backgroundImageHighlight: DefaultBackgroundImageHighlight];  
91 -}  
92 -  
93 -/**  
94 - 创建UIButton,高亮背景,圆角,边框颜色及宽度,文字及其颜色,字号,对齐方式  
95 -  
96 - @param title 文字  
97 - @param titleColor 文字颜色  
98 - @param labelFontSize 字体字号  
99 - @param labelTextAlginment 文字对齐方式  
100 - @param cornerRadius 圆角半径  
101 - @param borderWidth 边框宽度  
102 - @param borderColor 边框颜色  
103 - @param backgroundImageHighlight 高亮状态下的背景图片  
104 - @return 自定义的UIButton  
105 - */  
106 -+ (UIButton * _Nullable)buttonWithTitle:(NSString * _Nullable)title titleColor:(UIColor * _Nullable)titleColor labelFontSize:(CGFloat)labelFontSize labelTextAlginment:(NSTextAlignment)labelTextAlginment cornerRadius:(CGFloat)cornerRadius borderWidth:(CGFloat)borderWidth borderColor:(UIColor * _Nullable)borderColor backgroundImageHighlight:(UIImage * _Nullable)backgroundImageHighlight  
107 -{  
108 - return [self createButtonWithTitle:title titleColor:titleColor labelFontSize:labelFontSize labelTextAlginment:labelTextAlginment cornerRadius:cornerRadius borderWidth:borderWidth borderColor:borderColor backgroundColor:DefaultBackgroundColor backgroundImageNormal:DefaultBackgroundImageNormal backgroundImageSelected:DefaultBackgroundImageSelected backgroundImageHighlight:backgroundImageHighlight];  
109 -}  
110 -  
111 -/**  
112 - 创建UIButton,正常和高亮的背景图片,圆角半径,文字及其颜色,字号  
113 -  
114 - @param title 文字  
115 - @param titleColor 文字颜色  
116 - @param labelFontSize 字体字号  
117 - @param cornerRadius 圆角半径  
118 - @param backgroundImageNormal 正常状态下的背景图片  
119 - @param backgroundImageHighlight 高亮状态下的背景图片  
120 - @return 自定义的UIButton  
121 - */  
122 -+ (UIButton * _Nullable)buttonWithTitle:(NSString * _Nullable)title titleColor:(UIColor * _Nullable)titleColor labelFontSize:(CGFloat)labelFontSize cornerRadius:(CGFloat)cornerRadius backgroundImageNormal:(UIImage * _Nullable)backgroundImageNormal backgroundImageHighlight:(UIImage * _Nullable)backgroundImageHighlight  
123 -{  
124 - return [self createButtonWithTitle:title titleColor:titleColor labelFontSize:labelFontSize labelTextAlginment:DefaultTextAlignment cornerRadius:cornerRadius borderWidth:DefaultBorderWidth borderColor:DefaultBorderColor backgroundColor:DefaultBackgroundColor backgroundImageNormal:backgroundImageNormal backgroundImageSelected:DefaultBackgroundImageSelected backgroundImageHighlight:backgroundImageHighlight];  
125 -}  
126 -  
127 -/**  
128 - 创建UIButton,正常状态下的图片,圆角半径  
129 -  
130 - @param imageNormal 正常状态下的图片  
131 - @param cornerRadius 圆角半径  
132 - @return 自定义的UIButton  
133 - */  
134 -+ (UIButton * _Nullable)buttonWithImageNormal:(UIImage * _Nullable)imageNormal cornerRadius:(CGFloat)cornerRadius  
135 -{  
136 - UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];  
137 - [button setImage:imageNormal forState:UIControlStateNormal];  
138 - button.layer.cornerRadius = cornerRadius;  
139 - button.clipsToBounds = YES;  
140 - return button; 53 + return [self createButtonWithTitle:title titleColor:titleColor labelFontSize:labelFontSize labelTextAlginment:DefaultTextAlignment cornerRadius:DefaultCornerRadius borderWidth:DefaultBorderWidth borderColor:DefaultBorderColor backgroundColor:DefaultBackgroundColor backgroundImageNormal:DefaultBackgroundImageNormal backgroundImageSelected:DefaultBackgroundImageSelected backgroundImageHighlight: DefaultBackgroundImageHighlight];
141 } 54 }
142 55
143 /** 56 /**
144 - 创建UIButton,正常状态下的图片  
145 -  
146 - @param imageNormal 正常状态下的图片  
147 - @return 自定义的UIButton  
148 - */  
149 -+ (UIButton * _Nullable)buttonWithImageNormal:(UIImage * _Nullable)imageNormal  
150 -{  
151 - UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];  
152 - [button setImage:imageNormal forState:UIControlStateNormal];  
153 - return button;  
154 -}  
155 -  
156 -/**  
157 - 创建UIButton,正常和选中状态的图片  
158 -  
159 - @param imageNormal 正常状态下的图片  
160 - @param imageSelected 选中状态下的图片  
161 - @return 自定义的UIButton  
162 - */  
163 -+ (UIButton * _Nullable)buttonWithImageNormal:(UIImage * _Nullable)imageNormal imageSelected:(UIImage * _Nullable)imageSelected  
164 -{  
165 - UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];  
166 - [button setImage:imageNormal forState:UIControlStateNormal];  
167 - [button setImage:imageSelected forState:UIControlStateSelected];  
168 - return button;  
169 -}  
170 -  
171 -  
172 -/**  
173 - 创建UIButton,正常和选中下背景图片  
174 -  
175 - @param backgroundImageNormal 正常状态下的背景图片  
176 - @param backgroundImageSelected 选择状态下的背景图片  
177 - @return 自定义的UIButton  
178 - */  
179 -+ (UIButton * _Nullable)buttonWithBackgroundImageNormal:(UIImage * _Nullable)backgroundImageNormal backgroundImageSelected:(UIImage * _Nullable)backgroundImageSelected  
180 -{  
181 - UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];  
182 - [button setBackgroundImage:backgroundImageNormal forState:UIControlStateNormal];  
183 - [button setBackgroundImage:backgroundImageSelected forState:UIControlStateSelected];  
184 - return button;  
185 -}  
186 -  
187 -#pragma mark - private method  
188 -  
189 -/**  
190 创建一个自定义属性的UIButton 57 创建一个自定义属性的UIButton
191 - 58 +
192 @param title 文字 59 @param title 文字
193 @param titleColor 文字颜色 60 @param titleColor 文字颜色
194 @param labelFontSize 文字字号 61 @param labelFontSize 文字字号
@@ -219,6 +86,7 @@ static char leftNameKey; @@ -219,6 +86,7 @@ static char leftNameKey;
219 button.backgroundColor = backgroundColor; 86 button.backgroundColor = backgroundColor;
220 return button; 87 return button;
221 } 88 }
  89 +#pragma mark -设置热区
222 - (UIEdgeInsets)touchAreaInsets 90 - (UIEdgeInsets)touchAreaInsets
223 { 91 {
224 return [objc_getAssociatedObject(self, @selector(touchAreaInsets)) UIEdgeInsetsValue]; 92 return [objc_getAssociatedObject(self, @selector(touchAreaInsets)) UIEdgeInsetsValue];
@@ -248,4 +116,129 @@ static char leftNameKey; @@ -248,4 +116,129 @@ static char leftNameKey;
248 objc_setAssociatedObject(self, &leftNameKey, [NSNumber numberWithFloat:left], OBJC_ASSOCIATION_COPY_NONATOMIC); 116 objc_setAssociatedObject(self, &leftNameKey, [NSNumber numberWithFloat:left], OBJC_ASSOCIATION_COPY_NONATOMIC);
249 } 117 }
250 118
  119 +
  120 +#pragma mark -倒计时相关方法
  121 +- (void)setTimer:(dispatch_source_t)timer {
  122 + [self willChangeValueForKey:ktimer];
  123 + objc_setAssociatedObject(self, &ktimer,
  124 + timer,
  125 + OBJC_ASSOCIATION_RETAIN_NONATOMIC);
  126 + [self didChangeValueForKey:ktimer];
  127 +}
  128 +
  129 +- (dispatch_source_t)timer {
  130 + return objc_getAssociatedObject(self, &ktimer);
  131 +}
  132 +
  133 +- (void)setLeaveTime:(NSTimeInterval)leaveTime {
  134 + [self willChangeValueForKey:kleaveTime];
  135 + objc_setAssociatedObject(self, &kleaveTime,
  136 + @(leaveTime),
  137 + OBJC_ASSOCIATION_RETAIN_NONATOMIC);
  138 + [self didChangeValueForKey:kleaveTime];
  139 +}
  140 +
  141 +- (NSTimeInterval)leaveTime {
  142 + return [objc_getAssociatedObject(self, &kleaveTime) doubleValue];
  143 +}
  144 +
  145 +- (void)setCountDownFormat:(NSString *)countDownFormat {
  146 + [self willChangeValueForKey:kcountDownFormat];
  147 + objc_setAssociatedObject(self, &kcountDownFormat,
  148 + countDownFormat,
  149 + OBJC_ASSOCIATION_RETAIN_NONATOMIC);
  150 + [self didChangeValueForKey:kcountDownFormat];
  151 +}
  152 +
  153 +- (NSString *)countDownFormat {
  154 + return objc_getAssociatedObject(self, &kcountDownFormat);
  155 +}
  156 +
  157 +- (void)setButtonTimeStoppedCallback:(void (^)(void))buttonTimeStoppedCallback {
  158 + [self willChangeValueForKey:kButtonTimeStoppedCallback];
  159 + objc_setAssociatedObject(self, &kButtonTimeStoppedCallback,
  160 + buttonTimeStoppedCallback,
  161 + OBJC_ASSOCIATION_RETAIN_NONATOMIC);
  162 + [self didChangeValueForKey:kButtonTimeStoppedCallback];
  163 +}
  164 +
  165 +- (void (^)(void))buttonTimeStoppedCallback {
  166 + return objc_getAssociatedObject(self, &kButtonTimeStoppedCallback);
  167 +}
  168 +
  169 +- (void)setNormalTitle:(NSString *)normalTitle {
  170 + [self willChangeValueForKey:knormalTitle];
  171 + objc_setAssociatedObject(self, &knormalTitle,
  172 + normalTitle,
  173 + OBJC_ASSOCIATION_RETAIN_NONATOMIC);
  174 + [self didChangeValueForKey:knormalTitle];
  175 +}
  176 +
  177 +- (NSString *)normalTitle {
  178 + return objc_getAssociatedObject(self, &knormalTitle);
  179 +}
  180 +
  181 +#pragma mark - 设置函数
  182 +
  183 +- (void)CountDownWithTimeInterval:(NSTimeInterval)duration countDownFormat:(NSString *)format{
  184 + if (!format){
  185 + self.countDownFormat = @"%zd秒";
  186 + } else {
  187 + self.countDownFormat = format;
  188 + }
  189 + self.normalTitle = self.titleLabel.text;
  190 + __block NSInteger timeOut = duration; //倒计时时间
  191 + __weak typeof(self) weakSelf = self;
  192 + dispatch_queue_t queue = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
  193 + self.timer = dispatch_source_create(DISPATCH_SOURCE_TYPE_TIMER, 0, 0,queue);
  194 + dispatch_source_set_timer(self.timer,dispatch_walltime(NULL, 0),1.0*NSEC_PER_SEC, 0); //每秒执行
  195 + dispatch_source_set_event_handler(self.timer, ^{
  196 + if (timeOut <= 0) { // 倒计时结束,关闭
  197 + [weakSelf cancelTimer];
  198 + } else {
  199 + NSString *title = [NSString stringWithFormat:weakSelf.countDownFormat,timeOut];
  200 + dispatch_async(dispatch_get_main_queue(), ^{
  201 + [weakSelf setTitle:title forState:UIControlStateNormal];
  202 + });
  203 + timeOut--;
  204 + }
  205 + });
  206 + dispatch_resume(self.timer);
  207 +}
  208 +
  209 +- (void)cancelTimer {
  210 + if (self.timer == nil) return;
  211 + dispatch_source_cancel(self.timer);
  212 + self.timer = nil;
  213 + dispatch_async(dispatch_get_main_queue(), ^{
  214 + // 设置界面的按钮显示 根据自己需求设置
  215 + [self setTitle:self.normalTitle forState:UIControlStateNormal];
  216 + self.userInteractionEnabled = YES;
  217 + if (self.buttonTimeStoppedCallback) { self.buttonTimeStoppedCallback(); }
  218 + });
  219 +}
  220 +- (void)startButtonActivityIndicatorView:(UIActivityIndicatorViewStyle)style
  221 +{
  222 + self.enabled = NO;
  223 + [self setTitle:@"" forState:UIControlStateNormal];
  224 + [self setTitle:@"" forState:UIControlStateHighlighted];
  225 + [self setImage:nil forState:UIControlStateNormal];
  226 + [self setImage:nil forState:UIControlStateHighlighted];
  227 + UIActivityIndicatorView *indicatorView = [[UIActivityIndicatorView alloc] initWithActivityIndicatorStyle:style];
  228 +
  229 + indicatorView.frame = CGRectMake((self.bounds.size.width - 20)/2, self.bounds.size.height/2 - 10, 20, 20);
  230 + indicatorView.tag = indicatorViewTag;
  231 + indicatorView.hidesWhenStopped = YES;
  232 + [self addSubview:indicatorView];
  233 + [indicatorView startAnimating];
  234 +}
  235 +
  236 +- (void)endButtonActivityIndicatorView
  237 +{
  238 + UIActivityIndicatorView *indicatorView = (UIActivityIndicatorView *)[self viewWithTag:indicatorViewTag];
  239 + [indicatorView removeFromSuperview];
  240 + self.enabled = YES;
  241 + self.backgroundColor = [self.backgroundColor colorWithAlphaComponent:0.4*(5/2)];
  242 +}
  243 +
251 @end 244 @end
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/UIColorExtension/UIColor+CNLiveExtension.h
@@ -7,14 +7,22 @@ @@ -7,14 +7,22 @@
7 // 7 //
8 8
9 #import <UIKit/UIKit.h> 9 #import <UIKit/UIKit.h>
  10 +//十六进制颜色
  11 +#ifndef CNLiveColorWithHexString
  12 +#define CNLiveColorWithHexString(string) [UIColor cnlive_colorWithHexString:string]
  13 +#endif
10 14
  15 +//十六进制颜色及alpha
  16 +#ifndef CNLiveColorWithHexStringAlpha
  17 +#define CNLiveColorWithHexStringAlpha(string,alpha) [UIColor cnlive_colorWithHexString:string andAlpha:alpha]
  18 +#endif
11 @interface UIColor (CNLiveExtension) 19 @interface UIColor (CNLiveExtension)
12 20
13 - (CGFloat)cnlive_alpha; 21 - (CGFloat)cnlive_alpha;
14 22
15 //十六进制颜色 23 //十六进制颜色
16 -+ (UIColor *)colorWithHexString:(NSString *)color; 24 ++ (UIColor *)cnlive_colorWithHexString:(NSString *)color;
17 25
18 //十六进制颜色,alpha 26 //十六进制颜色,alpha
19 -+ (UIColor *) colorWithHexString:(NSString *)color andAlpha:(CGFloat )alpha; 27 ++ (UIColor *)cnlive_colorWithHexString:(NSString *)color andAlpha:(CGFloat )alpha;
20 @end 28 @end
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/UIColorExtension/UIColor+CNLiveExtension.m
@@ -18,13 +18,13 @@ @@ -18,13 +18,13 @@
18 } 18 }
19 19
20 //十六进制颜色 20 //十六进制颜色
21 -+ (UIColor *)colorWithHexString:(NSString *)color 21 ++ (UIColor *)cnlive_colorWithHexString:(NSString *)color
22 { 22 {
23 - return [self colorWithHexString:color andAlpha:1.0f]; 23 + return [self cnlive_colorWithHexString:color andAlpha:1.0f];
24 } 24 }
25 25
26 //十六进制颜色,alpha 26 //十六进制颜色,alpha
27 -+ (UIColor *) colorWithHexString:(NSString *)color andAlpha:(CGFloat )alpha 27 ++ (UIColor *)cnlive_colorWithHexString:(NSString *)color andAlpha:(CGFloat )alpha
28 { 28 {
29 NSString *cString = [[color stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString]; 29 NSString *cString = [[color stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] uppercaseString];
30 30
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/UIImageExtension/UIImage+CNLiveAdd.h
@@ -7,22 +7,26 @@ @@ -7,22 +7,26 @@
7 // 7 //
8 8
9 9
  10 +#import <UIKit/UIKit.h>
10 11
  12 +//颜色转背景图片
  13 +#ifndef CNLiveUIImageWithColor
  14 +#define CNLiveUIImageWithColor(color) [UIImage imageWithColor:color]
  15 +#endif
11 NS_ASSUME_NONNULL_BEGIN 16 NS_ASSUME_NONNULL_BEGIN
12 17
13 @interface UIImage (CNLiveAdd) 18 @interface UIImage (CNLiveAdd)
14 19
15 -  
16 /** 20 /**
17 重新设置size 21 重新设置size
18 - 22 +
19 @param size 目标size 23 @param size 目标size
20 @return 目标size的UIImage对象 24 @return 目标size的UIImage对象
21 */ 25 */
22 - (UIImage *)cnlive_imageByResizeToSize:(CGSize)size; 26 - (UIImage *)cnlive_imageByResizeToSize:(CGSize)size;
23 27
24 //颜色转背景图片 28 //颜色转背景图片
25 -- (UIImage *)imageWithColor:(UIColor *)color; 29 ++ (UIImage *)imageWithColor:(UIColor *)color;
26 @end 30 @end
27 31
28 NS_ASSUME_NONNULL_END 32 NS_ASSUME_NONNULL_END
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/UIImageExtension/UIImage+CNLiveAdd.m
@@ -20,7 +20,7 @@ @@ -20,7 +20,7 @@
20 } 20 }
21 21
22 //颜色转背景图片 22 //颜色转背景图片
23 -- (UIImage *)imageWithColor:(UIColor *)color { 23 ++ (UIImage *)imageWithColor:(UIColor *)color {
24 CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f); 24 CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);
25 UIGraphicsBeginImageContext(rect.size); 25 UIGraphicsBeginImageContext(rect.size);
26 CGContextRef context = UIGraphicsGetCurrentContext(); 26 CGContextRef context = UIGraphicsGetCurrentContext();
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/UIImageExtension/UIImage+ImageEffect.m
@@ -9,7 +9,7 @@ @@ -9,7 +9,7 @@
9 #import "UIImage+ImageEffect.h" 9 #import "UIImage+ImageEffect.h"
10 10
11 #import <Accelerate/Accelerate.h> 11 #import <Accelerate/Accelerate.h>
12 -//#import "CNLiveDefinesHeader.h" 12 +
13 @implementation UIImage (ImageEffect) 13 @implementation UIImage (ImageEffect)
14 14
15 - (UIImage *)applyLightEffect 15 - (UIImage *)applyLightEffect
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/UIImageExtension/UIImage+ScaleImageSize.h
@@ -10,5 +10,5 @@ @@ -10,5 +10,5 @@
10 10
11 @interface UIImage (ScaleImageSize) 11 @interface UIImage (ScaleImageSize)
12 -(UIImage*)scaleToSize:(CGSize)size; 12 -(UIImage*)scaleToSize:(CGSize)size;
13 - 13 ++ (UIImage *)createImageWithColor:(UIColor *)color;
14 @end 14 @end
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/UIImageExtension/UIImage+ScaleImageSize.m
@@ -28,4 +28,21 @@ @@ -28,4 +28,21 @@
28 // 返回新的改变大小后的图片 28 // 返回新的改变大小后的图片
29 return scaledImage; 29 return scaledImage;
30 } 30 }
  31 +// 颜色转为图片
  32 ++ (UIImage *)createImageWithColor:(UIColor *)color {
  33 + CGRect rect = CGRectMake(0, 0, 1.0f, 1.0f);
  34 + // 开启位图上下文
  35 + UIGraphicsBeginImageContext(rect.size);
  36 + // 开启上下文
  37 + CGContextRef ref = UIGraphicsGetCurrentContext();
  38 + // 使用color演示填充上下文
  39 + CGContextSetFillColorWithColor(ref, color.CGColor);
  40 + // 渲染上下文
  41 + CGContextFillRect(ref, rect);
  42 + // 从上下文中获取图片
  43 + UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
  44 + // 结束上下文
  45 + UIGraphicsEndImageContext();
  46 + return image;
  47 +}
31 @end 48 @end
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/UIImageExtension/UIImage+zipData.m
@@ -249,15 +249,15 @@ @@ -249,15 +249,15 @@
249 NSNumber * limitLength = [NSNumber numberWithInteger:19*1024*1024]; 249 NSNumber * limitLength = [NSNumber numberWithInteger:19*1024*1024];
250 CGFloat scale = [limitLength floatValue]/ [dataLength floatValue]; 250 CGFloat scale = [limitLength floatValue]/ [dataLength floatValue];
251 scale = scale > 0.3 ? 0.3 : scale; 251 scale = scale > 0.3 ? 0.3 : scale;
252 - data = UIImageJPEGRepresentation(sourceImage, scale); 252 + data = UIImageJPEGRepresentation(newImage, scale);
253 }else if (data.length > 10*1024*1024){//10M<x<=19M 253 }else if (data.length > 10*1024*1024){//10M<x<=19M
254 - data = UIImageJPEGRepresentation(sourceImage, 0.3); 254 + data = UIImageJPEGRepresentation(newImage, 0.3);
255 }else if (data.length > 1*1024*1024){//1M<x<=10M 255 }else if (data.length > 1*1024*1024){//1M<x<=10M
256 - data = UIImageJPEGRepresentation(sourceImage, 0.7); 256 + data = UIImageJPEGRepresentation(newImage, 0.7);
257 }else if (data.length > 512*1024) {//0.5M<x<1M 257 }else if (data.length > 512*1024) {//0.5M<x<1M
258 - data = UIImageJPEGRepresentation(sourceImage, 0.8); 258 + data = UIImageJPEGRepresentation(newImage, 0.8);
259 }else if (data.length > 102*1024) {//0.1M-0.5M 259 }else if (data.length > 102*1024) {//0.1M-0.5M
260 - data = UIImageJPEGRepresentation(sourceImage, 0.9); 260 + data = UIImageJPEGRepresentation(newImage, 0.9);
261 }else{ 261 }else{
262 //不压缩 262 //不压缩
263 } 263 }
@@ -316,15 +316,15 @@ @@ -316,15 +316,15 @@
316 NSNumber * limitLength = [NSNumber numberWithInteger:19*1024*1024]; 316 NSNumber * limitLength = [NSNumber numberWithInteger:19*1024*1024];
317 CGFloat scale = [limitLength floatValue]/ [dataLength floatValue]; 317 CGFloat scale = [limitLength floatValue]/ [dataLength floatValue];
318 scale = scale > 0.3 ? 0.3 : scale; 318 scale = scale > 0.3 ? 0.3 : scale;
319 - data = UIImageJPEGRepresentation(sourceImage, scale); 319 + data = UIImageJPEGRepresentation(newImage, scale);
320 }else if (data.length > 10*1024*1024){//10M<x<=19M 320 }else if (data.length > 10*1024*1024){//10M<x<=19M
321 - data = UIImageJPEGRepresentation(sourceImage, 0.3); 321 + data = UIImageJPEGRepresentation(newImage, 0.3);
322 }else if (data.length > 1*1024*1024){//1M<x<=10M 322 }else if (data.length > 1*1024*1024){//1M<x<=10M
323 - data = UIImageJPEGRepresentation(sourceImage, 0.7); 323 + data = UIImageJPEGRepresentation(newImage, 0.7);
324 }else if (data.length > 512*1024) {//0.5M<x<1M 324 }else if (data.length > 512*1024) {//0.5M<x<1M
325 - data = UIImageJPEGRepresentation(sourceImage, 0.8); 325 + data = UIImageJPEGRepresentation(newImage, 0.8);
326 }else if (data.length > 102*1024) {//0.1M-0.5M 326 }else if (data.length > 102*1024) {//0.1M-0.5M
327 - data = UIImageJPEGRepresentation(sourceImage, 0.9); 327 + data = UIImageJPEGRepresentation(newImage, 0.9);
328 }else{ 328 }else{
329 //不压缩 329 //不压缩
330 } 330 }
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/UIImageViewExtension/UIImageView+ZXExtension.m
@@ -10,7 +10,7 @@ @@ -10,7 +10,7 @@
10 #import "UIImageView+WebCache.h" 10 #import "UIImageView+WebCache.h"
11 #import "UIImage+ZXExtension.h" 11 #import "UIImage+ZXExtension.h"
12 12
13 -#define kDefaultUserCircleIcon [UIImage cnlive_imageWithColor:[UIColor grayColor] size:CGSizeMake(60, 60) cornerRadius:0] 13 +#define kCNLiveDefaultUserCircleIcon [UIImage cnlive_imageWithColor:[UIColor grayColor] size:CGSizeMake(60, 60) cornerRadius:0]
14 /** 14 /**
15 * weakSelf 15 * weakSelf
16 */ 16 */
@@ -32,13 +32,13 @@ @@ -32,13 +32,13 @@
32 32
33 - (void)zx_setRectHeader:(NSString *)url 33 - (void)zx_setRectHeader:(NSString *)url
34 { 34 {
35 - [self sd_setImageWithURL:[NSURL URLWithString:url] placeholderImage:kDefaultUserCircleIcon]; 35 + [self sd_setImageWithURL:[NSURL URLWithString:url] placeholderImage:kCNLiveDefaultUserCircleIcon];
36 } 36 }
37 37
38 - (void)zx_setCircleHeader:(NSString *)url 38 - (void)zx_setCircleHeader:(NSString *)url
39 { 39 {
40 weakself 40 weakself
41 - UIImage *placeholder = [kDefaultUserCircleIcon zx_circleImage]; 41 + UIImage *placeholder = [kCNLiveDefaultUserCircleIcon zx_circleImage];
42 [self sd_setImageWithURL:[NSURL URLWithString:url] placeholderImage:placeholder completed: 42 [self sd_setImageWithURL:[NSURL URLWithString:url] placeholderImage:placeholder completed:
43 ^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) { 43 ^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) {
44 // 如果图片下载失败,就不做任何处理,按照默认的做法:会显示占位图片 44 // 如果图片下载失败,就不做任何处理,按照默认的做法:会显示占位图片
@@ -133,8 +133,8 @@ @@ -133,8 +133,8 @@
133 CGContextRef context = NULL; 133 CGContextRef context = NULL;
134 CGColorSpaceRef colorSpace; 134 CGColorSpaceRef colorSpace;
135 void * bitmapData; 135 void * bitmapData;
136 - long bitmapByteCount;  
137 - long bitmapBytesPerRow; 136 + int bitmapByteCount;
  137 + int bitmapBytesPerRow;
138 138
139 // Get image width, height. We'll use the entire image. 139 // Get image width, height. We'll use the entire image.
140 size_t pixelsWide = CGImageGetWidth(inImage); 140 size_t pixelsWide = CGImageGetWidth(inImage);
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/UILabelExtension/UILabel+InitMethod.m
@@ -8,8 +8,6 @@ @@ -8,8 +8,6 @@
8 8
9 #import "UILabel+InitMethod.h" 9 #import "UILabel+InitMethod.h"
10 10
11 -//#import "CNLiveDefinesHeader.h"  
12 -  
13 @implementation UILabel (InitMethod) 11 @implementation UILabel (InitMethod)
14 12
15 + (instancetype)label 13 + (instancetype)label
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/UIViewExtension/UIView+CNGradienLayer.h deleted 100644 → 0
1 -//  
2 -// UIView+CNGradienLayer.h  
3 -// CNLiveNetAdd  
4 -//  
5 -// Created by cnliveJunBo on 2018/5/25.  
6 -// Copyright © 2018年 cnlive. All rights reserved.  
7 -//  
8 -  
9 -#import <UIKit/UIKit.h>  
10 -  
11 -@interface UIView (CNGradienLayer)  
12 -  
13 -- (void)setupGradient;  
14 -  
15 -@end  
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/UIViewExtension/UIView+CNGradienLayer.m deleted 100644 → 0
1 -//  
2 -// UIView+CNGradienLayer.m  
3 -// CNLiveNetAdd  
4 -//  
5 -// Created by cnliveJunBo on 2018/5/25.  
6 -// Copyright © 2018年 cnlive. All rights reserved.  
7 -//  
8 -  
9 -#import "UIView+CNGradienLayer.h"  
10 -  
11 -@implementation UIView (CNGradienLayer)  
12 -  
13 -- (void)setupGradient {  
14 -  
15 - // self.alpha = 0.65;  
16 - CAGradientLayer *gradientLayer0 = [[CAGradientLayer alloc] init];  
17 - gradientLayer0.cornerRadius = 5;  
18 - gradientLayer0.frame = self.bounds;  
19 - gradientLayer0.colors = @[  
20 - (id)[UIColor colorWithRed:243.0f/255.0f green:246.0f/255.0f blue:248.0f/255.0f alpha:1.0f].CGColor,  
21 - (id)[UIColor colorWithRed:249.0f/255.0f green:251.0f/255.0f blue:252.0f/255.0f alpha:1.0f].CGColor,  
22 - (id)[UIColor colorWithRed:255.0f/255.0f green:255.0f/255.0f blue:255.0f/255.0f alpha:1.0f].CGColor];  
23 - gradientLayer0.locations = @[@0, @0, @1];  
24 - [gradientLayer0 setStartPoint:CGPointMake(1, 1)];  
25 - [gradientLayer0 setEndPoint:CGPointMake(1, 0)];  
26 -// [self.layer insertSublayer:gradientLayer0 atIndex:0];  
27 - [self.layer addSublayer:gradientLayer0];  
28 -}  
29 -  
30 -@end  
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/UIViewExtension/UIView+CustomAutoLayout.m
@@ -7,7 +7,7 @@ @@ -7,7 +7,7 @@
7 // 7 //
8 8
9 #import "UIView+CustomAutoLayout.h" 9 #import "UIView+CustomAutoLayout.h"
10 -//#import "CNLiveDefinesHeader.h" 10 +
11 @implementation UIView (CustomAutoLayout) 11 @implementation UIView (CustomAutoLayout)
12 12
13 - (UIView *)sameWith:(UIView *)brotherView 13 - (UIView *)sameWith:(UIView *)brotherView
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/UIViewExtension/UIView+Effect.m
@@ -30,14 +30,4 @@ @@ -30,14 +30,4 @@
30 [self insertSubview:effectView atIndex:0]; 30 [self insertSubview:effectView atIndex:0];
31 } 31 }
32 32
33 -- (void)blurSelfAfterIOS7  
34 -{  
35 - UIVisualEffectView *effectView = [[UIVisualEffectView alloc] initWithEffect:[UIBlurEffect effectWithStyle:UIBlurEffectStyleLight]];  
36 - effectView.autoresizesSubviews = YES;  
37 - effectView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;  
38 - effectView.alpha = 1;  
39 -  
40 - [self insertSubview:effectView atIndex:0];  
41 -}  
42 -  
43 @end 33 @end
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/UIViewExtension/UIView+Layout.h deleted 100644 → 0
1 -//  
2 -// UIView+Layout.h  
3 -// CommonLibrary  
4 -//  
5 -// Created by Alexi Chen on 2/28/13.  
6 -// Copyright (c) 2013 AlexiChen. All rights reserved.  
7 -//  
8 -  
9 -#import <UIKit/UIKit.h>  
10 -  
11 -@interface UIView (Layout)  
12 -  
13 -// 添加子控件  
14 -- (void)addOwnViews;  
15 -  
16 -// 配置子控件参数  
17 -- (void)configOwnViews;  
18 -  
19 -//- (void)configWith:(NSMutableDictionary *)jsonDic;  
20 -  
21 -// isAutoLayoutr返回YES时,使用此方法进行布局  
22 -- (void)autoLayoutSubViews;  
23 -  
24 -// 是否使用自动布局  
25 -- (BOOL)isAutoLayout;  
26 -  
27 -// 外部通过此功能进行设置  
28 -// 只在布局时使用  
29 -- (void)setFrameAndLayout:(CGRect)rect;  
30 -  
31 -// 对于一些自定义的UIView,在设置Frame后,如需要重新调整局的话  
32 -// 作为所以控修改其自身内部子控件的入口  
33 -// 所有的自定义View最好不要从initWithFrams里面进行设置其子View的frame,  
34 -// 统一在些处进行设置  
35 -- (void)relayoutFrameOfSubViews;  
36 -  
37 -- (void)addBottomLine:(CGRect)rect;  
38 -  
39 -- (void)addBottomLine:(UIColor *)color inRect:(CGRect)rect;  
40 -  
41 -@end  
42 -  
43 -@interface UIView (ShakeAnimation)  
44 -  
45 -// 左右shake  
46 -- (void)shake;  
47 -  
48 -@end  
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/UIViewExtension/UIView+Layout.m deleted 100644 → 0
1 -//  
2 -// UIView+Layout.m  
3 -// CommonLibrary  
4 -//  
5 -// Created by Alexi Chen on 2/28/13.  
6 -// Copyright (c) 2013 AlexiChen. All rights reserved.  
7 -//  
8 -  
9 -#import "UIView+Layout.h"  
10 -//#import "CNLiveDefinesHeader.h"  
11 -@implementation UIView (Layout)  
12 -  
13 -- (id)init  
14 -{  
15 - if (self = [self initWithFrame:CGRectZero]) {  
16 -  
17 - if (![self isAutoLayout])  
18 - {  
19 - [self addOwnViews];  
20 - [self configOwnViews];  
21 - }  
22 - else  
23 - {  
24 - [self autoLayoutSubViews];  
25 - }  
26 -  
27 - }  
28 - return self;  
29 -}  
30 -  
31 -- (BOOL)isAutoLayout  
32 -{  
33 - return NO;  
34 -}  
35 -  
36 -- (void)autoLayoutSubViews  
37 -{  
38 -  
39 -}  
40 -  
41 -- (void)addOwnViews  
42 -{  
43 - // 添加自己的控件  
44 -}  
45 -  
46 -- (void)configOwnViews  
47 -{  
48 - // 初始化控件的值  
49 -}  
50 -  
51 -//- (void)configWith:(NSMutableDictionary *)jsonDic  
52 -//{  
53 -//  
54 -//}  
55 -  
56 -- (void)setFrameAndLayout:(CGRect)rect  
57 -{  
58 - self.frame = rect;  
59 - if (self.bounds.size.width != 0 && self.bounds.size.height != 0)  
60 - {  
61 - [self relayoutFrameOfSubViews];  
62 - }  
63 -}  
64 -- (void)relayoutFrameOfSubViews  
65 -{  
66 - // do nothing here  
67 -}  
68 -  
69 -- (void)addBottomLine:(CGRect)rect  
70 -{  
71 - [self addBottomLine:[UIColor lightGrayColor] inRect:rect];  
72 -}  
73 -  
74 -- (void)addBottomLine:(UIColor *)color inRect:(CGRect)rect  
75 -{  
76 - CGContextRef context = UIGraphicsGetCurrentContext();  
77 - UIGraphicsPushContext(context);  
78 -  
79 - //Set the stroke (pen) color  
80 - CGContextSetStrokeColorWithColor(context, color.CGColor);  
81 - CGContextSetLineWidth(context, 1.0);  
82 -  
83 - CGContextBeginPath(context);  
84 - CGContextMoveToPoint(context, CGRectGetMinX(rect), CGRectGetMaxY(rect));  
85 - CGContextAddLineToPoint(context, CGRectGetMaxX(rect), CGRectGetMaxY(rect));  
86 -  
87 - CGContextStrokePath(context);  
88 -  
89 - UIGraphicsPopContext();  
90 -}  
91 -  
92 -@end  
93 -  
94 -  
95 -@implementation UIView (ShakeAnimation)  
96 -  
97 -- (void)shake  
98 -{  
99 - CGFloat t =4.0;  
100 - CGAffineTransform translateRight = CGAffineTransformTranslate(CGAffineTransformIdentity, t, 0.0);  
101 - CGAffineTransform translateLeft = CGAffineTransformTranslate(CGAffineTransformIdentity, -t, 0.0);  
102 - self.transform = translateLeft;  
103 - [UIView animateWithDuration:0.07 delay:0.0 options:UIViewAnimationOptionAutoreverse | UIViewAnimationOptionRepeat animations:^{  
104 - [UIView setAnimationRepeatCount:2.0];  
105 - self.transform = translateRight;  
106 - } completion:^(BOOL finished) {  
107 - if(finished)  
108 - {  
109 - [UIView animateWithDuration:0.05 delay:0.0 options:UIViewAnimationOptionBeginFromCurrentState animations:^{  
110 - self.transform =CGAffineTransformIdentity;  
111 - } completion:NULL];  
112 - }  
113 - }];  
114 -}  
115 -  
116 -@end  
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/UIViewExtension/UIView+ModifyFrame.h deleted 100644 → 0
1 -//  
2 -// UIView+ModifyFrame.h  
3 -// CommonLibrary  
4 -//  
5 -// Created by Alexi on 14-2-21.  
6 -// Copyright (c) 2014年 CommonLibrary. All rights reserved.  
7 -//  
8 -  
9 -  
10 -#import <UIKit/UIKit.h>  
11 -  
12 -@interface UIView (ModifyFrame)  
13 -  
14 -@property float x;  
15 -@property float y;  
16 -@property CGPoint origin;  
17 -@property float width;  
18 -@property float height;  
19 -  
20 -@property CGSize boundsSize;  
21 -  
22 -- (CGPoint)originRelativeToWindow;  
23 -- (CGPoint)centerRelativeToWindow;  
24 -  
25 -@end  
26 -  
27 -@interface UIViewController (ModifyFrame)  
28 -  
29 -@property float x;  
30 -@property float y;  
31 -@property float width;  
32 -@property float height;  
33 -@property CGSize boundsSize;  
34 -  
35 -  
36 -@end  
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/UIViewExtension/UIView+ModifyFrame.m deleted 100644 → 0
1 -//  
2 -// UIView+ModifyFrame.m  
3 -// CommonLibrary  
4 -//  
5 -// Created by Alexi on 14-2-21.  
6 -// Copyright (c) 2014年 CommonLibrary. All rights reserved.  
7 -//  
8 -#import "UIView+ModifyFrame.h"  
9 -  
10 -@implementation UIView (ModifyFrame)  
11 -  
12 -- (float)x  
13 -{  
14 - return self.frame.origin.x;  
15 -}  
16 -  
17 -- (void)setX:(float)newX  
18 -{  
19 - CGRect frame = self.frame;  
20 - frame.origin.x = newX;  
21 - self.frame = frame;  
22 -}  
23 -  
24 -- (float)y  
25 -{  
26 - return self.frame.origin.y;  
27 -}  
28 -  
29 -- (void)setY:(float)newY  
30 -{  
31 - CGRect frame = self.frame;  
32 - frame.origin.y = newY;  
33 - self.frame = frame;  
34 -}  
35 -  
36 -- (float)width  
37 -{  
38 - return self.frame.size.width;  
39 -}  
40 -  
41 -- (void)setOrigin:(CGPoint)origin  
42 -{  
43 - self.x = origin.x;  
44 - self.y = origin.y;  
45 -}  
46 -  
47 -- (CGPoint)origin  
48 -{  
49 - return CGPointMake(self.x, self.y);  
50 -}  
51 -  
52 -- (void)setWidth:(float)newWidth  
53 -{  
54 - CGRect frame = self.frame;  
55 - frame.size.width = newWidth;  
56 - self.frame = frame;  
57 -}  
58 -  
59 -- (float)height  
60 -{  
61 - return self.frame.size.height;  
62 -}  
63 -  
64 -- (void)setHeight:(float)newHeight  
65 -{  
66 - CGRect frame = self.frame;  
67 - frame.size.height = newHeight;  
68 - self.frame = frame;  
69 -}  
70 -  
71 -- (CGSize)boundsSize  
72 -{  
73 - return self.bounds.size;  
74 -}  
75 -  
76 -- (void)setBoundsSize:(CGSize)boundsSize  
77 -{  
78 - CGRect boundsRect = self.bounds;  
79 - boundsRect.size.width = boundsSize.width;  
80 - boundsRect.size.height = boundsSize.height;  
81 - self.bounds = boundsRect;  
82 -}  
83 -  
84 -  
85 -- (CGPoint)originRelativeToWindow  
86 -{  
87 - CGPoint p = self.origin;  
88 -  
89 - UIView *superView = self.superview;  
90 - while (superView) {  
91 - p.x += superView.x;  
92 - p.y += superView.y;  
93 - superView = superView.superview;  
94 - }  
95 - return p;  
96 -  
97 -}  
98 -- (CGPoint)centerRelativeToWindow  
99 -{  
100 - CGPoint p = CGPointMake(self.x + self.width/2, self.y + self.height/2);  
101 -  
102 - UIView *superView = self.superview;  
103 - while (superView) {  
104 - p.x += superView.x;  
105 - p.y += superView.y;  
106 - superView = superView.superview;  
107 - }  
108 - return p;  
109 -}  
110 -  
111 -@end  
112 -  
113 -  
114 -@implementation UIViewController (ModifyFrame)  
115 -  
116 -- (float)x  
117 -{  
118 - return self.view.x;  
119 -}  
120 -  
121 -- (void)setX:(float)newX  
122 -{  
123 - self.view.x = newX;  
124 -}  
125 -  
126 -- (float)y  
127 -{  
128 - return self.view.y;  
129 -}  
130 -  
131 -- (void)setY:(float)newY  
132 -{  
133 - self.view.y = newY;  
134 -}  
135 -  
136 -- (float)width  
137 -{  
138 - return self.view.width;  
139 -}  
140 -  
141 -- (void)setWidth:(float)newWidth  
142 -{  
143 - self.view.width = newWidth;  
144 -  
145 -}  
146 -  
147 -- (float)height  
148 -{  
149 - return self.view.height;  
150 -}  
151 -  
152 -- (void)setHeight:(float)newHeight  
153 -{  
154 - self.view.height = newHeight;  
155 -}  
156 -  
157 -- (CGSize)boundsSize  
158 -{  
159 - return self.view.boundsSize;  
160 -}  
161 -  
162 -- (void)setBoundsSize:(CGSize)boundsSize  
163 -{  
164 - self.view.boundsSize = boundsSize;  
165 -}  
166 -  
167 -@end  
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/CNLiveCommonCategory.h
@@ -33,14 +33,11 @@ @@ -33,14 +33,11 @@
33 #import "NSDate+Common.h" 33 #import "NSDate+Common.h"
34 #import "UIView+Glow.h" 34 #import "UIView+Glow.h"
35 #import "UIView+Effect.h" 35 #import "UIView+Effect.h"
36 -#import "UIView+Layout.h"  
37 -#import "UIView+ModifyFrame.h" 36 +#import "UIView+IMLayout.h"
38 #import "UIView+CaptureImage.h" 37 #import "UIView+CaptureImage.h"
39 -#import "UIView+CNGradienLayer.h"  
40 #import "UIView+RelativeCoordinate.h" 38 #import "UIView+RelativeCoordinate.h"
41 #import "UIView+CustomAutoLayout.h" 39 #import "UIView+CustomAutoLayout.h"
42 #import "UITableView+Hit.h" 40 #import "UITableView+Hit.h"
43 -#import "UIButton+CNCountDownButton.h"  
44 #import "UIButton+createButton.h" 41 #import "UIButton+createButton.h"
45 #import "UITextField+ZXExtension.h" 42 #import "UITextField+ZXExtension.h"
46 #import "UIViewController+ChildViewController.h" 43 #import "UIViewController+ChildViewController.h"
Example/Pods/Local Podspecs/CNLiveDisease.podspec.json
1 { 1 {
2 "name": "CNLiveDisease", 2 "name": "CNLiveDisease",
3 - "version": "0.0.7", 3 + "version": "0.1.0",
4 "summary": "智慧农业部分组件化", 4 "summary": "智慧农业部分组件化",
5 "description": "TODO: Add long description of the pod here.", 5 "description": "TODO: Add long description of the pod here.",
6 "homepage": "http://bj.gitlab.cnlive.com/ios-team/CNLiveDisease", 6 "homepage": "http://bj.gitlab.cnlive.com/ios-team/CNLiveDisease",
@@ -13,46 +13,71 @@ @@ -13,46 +13,71 @@
13 }, 13 },
14 "source": { 14 "source": {
15 "git": "http://bj.gitlab.cnlive.com/ios-team/CNLiveDisease.git", 15 "git": "http://bj.gitlab.cnlive.com/ios-team/CNLiveDisease.git",
16 - "tag": "0.0.7" 16 + "tag": "0.1.0"
17 }, 17 },
18 "platforms": { 18 "platforms": {
19 "ios": "9.0" 19 "ios": "9.0"
20 }, 20 },
21 - "source_files": "CNLiveDisease/Classes/**/*",  
22 "resource_bundles": { 21 "resource_bundles": {
23 "CNLiveDisease": [ 22 "CNLiveDisease": [
24 "CNLiveDisease/Assets/Assets.xcassets" 23 "CNLiveDisease/Assets/Assets.xcassets"
25 ] 24 ]
26 }, 25 },
27 - "public_header_files": "Pod/Classes/**/*.h",  
28 "frameworks": [ 26 "frameworks": [
29 "UIKit", 27 "UIKit",
30 "Foundation" 28 "Foundation"
31 ], 29 ],
32 - "dependencies": {  
33 - "CNLiveBaseKit": [ 30 + "subspecs": [
  31 + {
  32 + "name": "View",
  33 + "dependencies": {
  34 + "CNLiveTripartiteManagement/QMUIKit": [
34 35
35 - ],  
36 - "Masonry": [ 36 + ],
  37 + "CNLiveBaseKit": [
37 38
38 - ],  
39 - "QMUIKit": [  
40 - "~> 3.1.0"  
41 - ],  
42 - "CNLiveCommonCategory": [ 39 + ]
  40 + },
  41 + "source_files": "CNLiveDisease/Classes/View/*.{h,m}"
  42 + },
  43 + {
  44 + "name": "Controller",
  45 + "dependencies": {
  46 + "CNLiveBaseKit": [
43 47
44 - ],  
45 - "CNLiveImagePickerController": [ 48 + ],
  49 + "CNLiveTripartiteManagement/QMUIKit": [
46 50
47 - ],  
48 - "CNLiveAVCamera": [ 51 + ],
  52 + "CNLiveTripartiteManagement/Masonry": [
49 53
50 - ],  
51 - "FLAnimatedImage": [ 54 + ],
  55 + "CNLiveCommonCategory": [
52 56
53 - ],  
54 - "CNLiveCoreMediator": [ 57 + ],
  58 + "CNLiveImagePickerController": [
55 59
56 - ]  
57 - } 60 + ],
  61 + "CNLiveTripartiteManagement/FLAnimatedImage": [
  62 +
  63 + ],
  64 + "CNLiveAVCamera": [
  65 +
  66 + ],
  67 + "CNLiveCommonClass": [
  68 +
  69 + ],
  70 + "CNLiveRequestBastKit": [
  71 +
  72 + ],
  73 + "CNLiveDisease/View": [
  74 +
  75 + ],
  76 + "CNLiveCoreMediator_ModuleDiseaseAction": [
  77 +
  78 + ]
  79 + },
  80 + "source_files": "CNLiveDisease/Classes/Controller/*.{h,m}"
  81 + }
  82 + ]
58 } 83 }
Example/Pods/Manifest.lock
1 PODS: 1 PODS:
2 - - CNLiveAVCamera (0.1.1): 2 + - AFNetworking (3.2.1):
  3 + - AFNetworking/NSURLSession (= 3.2.1)
  4 + - AFNetworking/Reachability (= 3.2.1)
  5 + - AFNetworking/Security (= 3.2.1)
  6 + - AFNetworking/Serialization (= 3.2.1)
  7 + - AFNetworking/UIKit (= 3.2.1)
  8 + - AFNetworking/NSURLSession (3.2.1):
  9 + - AFNetworking/Reachability
  10 + - AFNetworking/Security
  11 + - AFNetworking/Serialization
  12 + - AFNetworking/Reachability (3.2.1)
  13 + - AFNetworking/Security (3.2.1)
  14 + - AFNetworking/Serialization (3.2.1)
  15 + - AFNetworking/UIKit (3.2.1):
  16 + - AFNetworking/NSURLSession
  17 + - CNLiveAVCamera (0.1.2):
  18 + - CNLiveBaseKit
  19 + - CNLiveBusinessTools
  20 + - CNLiveCommonCategory
3 - Masonry (~> 1.0.2) 21 - Masonry (~> 1.0.2)
  22 + - QMUIKit (~> 3.1.7)
4 - CNLiveBaseKit (0.1.8): 23 - CNLiveBaseKit (0.1.8):
5 - MJExtension (~> 3.0.15.1) 24 - MJExtension (~> 3.0.15.1)
6 - - CNLiveCommonCategory (0.2.5):  
7 - - SDWebImage (~> 4.4.2)  
8 - - CNLiveCoreMediator (0.1.0)  
9 - - CNLiveDisease (0.0.7): 25 + - CNLiveBusinessTools (0.1.1):
  26 + - CNLiveBaseKit
  27 + - CNLiveEnvironmentConfiguration
  28 + - CNLiveUserManagement
  29 + - CNLiveCommonCategory (0.3.9):
  30 + - SDWebImage (~> 4.4.6)
  31 + - CNLiveCommonClass (0.0.2):
  32 + - CNLiveBaseKit
  33 + - CNLiveRequestBastKit
  34 + - CNLiveTripartiteManagement/QMUIKit
  35 + - CNLiveCoreMediator (0.1.1)
  36 + - CNLiveCoreMediator_ModuleDiseaseAction (0.0.2):
  37 + - CNLiveCoreMediator
  38 + - CNLiveDisease (0.1.0):
  39 + - CNLiveDisease/Controller (= 0.1.0)
  40 + - CNLiveDisease/View (= 0.1.0)
  41 + - CNLiveDisease/Controller (0.1.0):
10 - CNLiveAVCamera 42 - CNLiveAVCamera
11 - CNLiveBaseKit 43 - CNLiveBaseKit
12 - CNLiveCommonCategory 44 - CNLiveCommonCategory
13 - - CNLiveCoreMediator 45 + - CNLiveCommonClass
  46 + - CNLiveCoreMediator_ModuleDiseaseAction
  47 + - CNLiveDisease/View
14 - CNLiveImagePickerController 48 - CNLiveImagePickerController
15 - - FLAnimatedImage  
16 - - Masonry  
17 - - QMUIKit (~> 3.1.0) 49 + - CNLiveRequestBastKit
  50 + - CNLiveTripartiteManagement/FLAnimatedImage
  51 + - CNLiveTripartiteManagement/Masonry
  52 + - CNLiveTripartiteManagement/QMUIKit
  53 + - CNLiveDisease/View (0.1.0):
  54 + - CNLiveBaseKit
  55 + - CNLiveTripartiteManagement/QMUIKit
  56 + - CNLiveEnvironmentConfiguration (0.0.5)
18 - CNLiveImagePickerController (0.0.2) 57 - CNLiveImagePickerController (0.0.2)
  58 + - CNLiveRequestBastKit (0.2.1.6):
  59 + - AFNetworking
  60 + - CNLiveTripartiteManagement/FLAnimatedImage (0.0.6):
  61 + - FLAnimatedImage (~> 1.0.12)
  62 + - CNLiveTripartiteManagement/Masonry (0.0.6):
  63 + - Masonry (~> 1.0.2)
  64 + - CNLiveTripartiteManagement/QMUIKit (0.0.6):
  65 + - QMUIKit (~> 3.1.7)
  66 + - CNLiveUserManagement (0.0.8):
  67 + - MJExtension
19 - FLAnimatedImage (1.0.12) 68 - FLAnimatedImage (1.0.12)
20 - Masonry (1.0.2) 69 - Masonry (1.0.2)
21 - MJExtension (3.0.15.1) 70 - MJExtension (3.0.15.1)
22 - - QMUIKit (3.1.0):  
23 - - QMUIKit/QMUIComponents (= 3.1.0)  
24 - - QMUIKit/QMUICore (= 3.1.0)  
25 - - QMUIKit/QMUILog (= 3.1.0)  
26 - - QMUIKit/QMUIMainFrame (= 3.1.0)  
27 - - QMUIKit/QMUIResources (= 3.1.0)  
28 - - QMUIKit/QMUIWeakObjectContainer (= 3.1.0)  
29 - - QMUIKit/QMUIComponents (3.1.0):  
30 - - QMUIKit/QMUIComponents/NavigationBarTransition (= 3.1.0)  
31 - - QMUIKit/QMUIComponents/QMUIAlertController (= 3.1.0)  
32 - - QMUIKit/QMUIComponents/QMUIAssetLibrary (= 3.1.0)  
33 - - QMUIKit/QMUIComponents/QMUIBadge (= 3.1.0)  
34 - - QMUIKit/QMUIComponents/QMUIButton (= 3.1.0)  
35 - - QMUIKit/QMUIComponents/QMUICAAnimationExtension (= 3.1.0)  
36 - - QMUIKit/QMUIComponents/QMUICellHeightCache (= 3.1.0)  
37 - - QMUIKit/QMUIComponents/QMUICellHeightKeyCache (= 3.1.0)  
38 - - QMUIKit/QMUIComponents/QMUICellSizeKeyCache (= 3.1.0)  
39 - - QMUIKit/QMUIComponents/QMUICollectionViewPagingLayout (= 3.1.0)  
40 - - QMUIKit/QMUIComponents/QMUIConsole (= 3.1.0)  
41 - - QMUIKit/QMUIComponents/QMUIDialogViewController (= 3.1.0)  
42 - - QMUIKit/QMUIComponents/QMUIEmotionInputManager (= 3.1.0)  
43 - - QMUIKit/QMUIComponents/QMUIEmotionView (= 3.1.0)  
44 - - QMUIKit/QMUIComponents/QMUIEmptyView (= 3.1.0)  
45 - - QMUIKit/QMUIComponents/QMUIFillButton (= 3.1.0)  
46 - - QMUIKit/QMUIComponents/QMUIFloatLayoutView (= 3.1.0)  
47 - - QMUIKit/QMUIComponents/QMUIGhostButton (= 3.1.0)  
48 - - QMUIKit/QMUIComponents/QMUIGridView (= 3.1.0)  
49 - - QMUIKit/QMUIComponents/QMUIImagePickerLibrary (= 3.1.0)  
50 - - QMUIKit/QMUIComponents/QMUIImagePreviewView (= 3.1.0)  
51 - - QMUIKit/QMUIComponents/QMUIKeyboardManager (= 3.1.0)  
52 - - QMUIKit/QMUIComponents/QMUILabel (= 3.1.0)  
53 - - QMUIKit/QMUIComponents/QMUILinkButton (= 3.1.0)  
54 - - QMUIKit/QMUIComponents/QMUILogManagerViewController (= 3.1.0)  
55 - - QMUIKit/QMUIComponents/QMUILogWithConfigurationSupported (= 3.1.0)  
56 - - QMUIKit/QMUIComponents/QMUIMarqueeLabel (= 3.1.0)  
57 - - QMUIKit/QMUIComponents/QMUIModalPresentationViewController (= 3.1.0)  
58 - - QMUIKit/QMUIComponents/QMUIMoreOperationController (= 3.1.0)  
59 - - QMUIKit/QMUIComponents/QMUIMultipleDelegates (= 3.1.0)  
60 - - QMUIKit/QMUIComponents/QMUINavigationButton (= 3.1.0)  
61 - - QMUIKit/QMUIComponents/QMUINavigationTitleView (= 3.1.0)  
62 - - QMUIKit/QMUIComponents/QMUIOrderedDictionary (= 3.1.0)  
63 - - QMUIKit/QMUIComponents/QMUIPieProgressView (= 3.1.0)  
64 - - QMUIKit/QMUIComponents/QMUIPopupContainerView (= 3.1.0)  
65 - - QMUIKit/QMUIComponents/QMUIPopupMenuView (= 3.1.0)  
66 - - QMUIKit/QMUIComponents/QMUIScrollAnimator (= 3.1.0)  
67 - - QMUIKit/QMUIComponents/QMUISearchBar (= 3.1.0)  
68 - - QMUIKit/QMUIComponents/QMUISearchController (= 3.1.0)  
69 - - QMUIKit/QMUIComponents/QMUISegmentedControl (= 3.1.0)  
70 - - QMUIKit/QMUIComponents/QMUISlider (= 3.1.0)  
71 - - QMUIKit/QMUIComponents/QMUIStaticTableView (= 3.1.0)  
72 - - QMUIKit/QMUIComponents/QMUITableView (= 3.1.0)  
73 - - QMUIKit/QMUIComponents/QMUITableViewCell (= 3.1.0)  
74 - - QMUIKit/QMUIComponents/QMUITableViewHeaderFooterView (= 3.1.0)  
75 - - QMUIKit/QMUIComponents/QMUITableViewProtocols (= 3.1.0)  
76 - - QMUIKit/QMUIComponents/QMUITestView (= 3.1.0)  
77 - - QMUIKit/QMUIComponents/QMUITextField (= 3.1.0)  
78 - - QMUIKit/QMUIComponents/QMUITextView (= 3.1.0)  
79 - - QMUIKit/QMUIComponents/QMUITips (= 3.1.0)  
80 - - QMUIKit/QMUIComponents/QMUIToastView (= 3.1.0)  
81 - - QMUIKit/QMUIComponents/QMUIToolbarButton (= 3.1.0)  
82 - - QMUIKit/QMUIComponents/QMUIVisualEffectView (= 3.1.0)  
83 - - QMUIKit/QMUIComponents/QMUIZoomImageView (= 3.1.0)  
84 - - QMUIKit/QMUICore  
85 - - QMUIKit/QMUIComponents/NavigationBarTransition (3.1.0): 71 + - QMUIKit (3.1.9):
  72 + - QMUIKit/QMUIComponents (= 3.1.9)
  73 + - QMUIKit/QMUICore (= 3.1.9)
  74 + - QMUIKit/QMUILog (= 3.1.9)
  75 + - QMUIKit/QMUIMainFrame (= 3.1.9)
  76 + - QMUIKit/QMUIResources (= 3.1.9)
  77 + - QMUIKit/QMUIWeakObjectContainer (= 3.1.9)
  78 + - QMUIKit/QMUIComponents (3.1.9):
  79 + - QMUIKit/QMUIComponents/NavigationBarTransition (= 3.1.9)
  80 + - QMUIKit/QMUIComponents/QMUIAlertController (= 3.1.9)
  81 + - QMUIKit/QMUIComponents/QMUIAssetLibrary (= 3.1.9)
  82 + - QMUIKit/QMUIComponents/QMUIBadge (= 3.1.9)
  83 + - QMUIKit/QMUIComponents/QMUIButton (= 3.1.9)
  84 + - QMUIKit/QMUIComponents/QMUICAAnimationExtension (= 3.1.9)
  85 + - QMUIKit/QMUIComponents/QMUICellHeightCache (= 3.1.9)
  86 + - QMUIKit/QMUIComponents/QMUICellHeightKeyCache (= 3.1.9)
  87 + - QMUIKit/QMUIComponents/QMUICellSizeKeyCache (= 3.1.9)
  88 + - QMUIKit/QMUIComponents/QMUICollectionViewPagingLayout (= 3.1.9)
  89 + - QMUIKit/QMUIComponents/QMUIConsole (= 3.1.9)
  90 + - QMUIKit/QMUIComponents/QMUIDialogViewController (= 3.1.9)
  91 + - QMUIKit/QMUIComponents/QMUIEmotionInputManager (= 3.1.9)
  92 + - QMUIKit/QMUIComponents/QMUIEmotionView (= 3.1.9)
  93 + - QMUIKit/QMUIComponents/QMUIEmptyView (= 3.1.9)
  94 + - QMUIKit/QMUIComponents/QMUIFillButton (= 3.1.9)
  95 + - QMUIKit/QMUIComponents/QMUIFloatLayoutView (= 3.1.9)
  96 + - QMUIKit/QMUIComponents/QMUIGhostButton (= 3.1.9)
  97 + - QMUIKit/QMUIComponents/QMUIGridView (= 3.1.9)
  98 + - QMUIKit/QMUIComponents/QMUIImagePickerLibrary (= 3.1.9)
  99 + - QMUIKit/QMUIComponents/QMUIImagePreviewView (= 3.1.9)
  100 + - QMUIKit/QMUIComponents/QMUIKeyboardManager (= 3.1.9)
  101 + - QMUIKit/QMUIComponents/QMUILabel (= 3.1.9)
  102 + - QMUIKit/QMUIComponents/QMUILinkButton (= 3.1.9)
  103 + - QMUIKit/QMUIComponents/QMUILogManagerViewController (= 3.1.9)
  104 + - QMUIKit/QMUIComponents/QMUILogWithConfigurationSupported (= 3.1.9)
  105 + - QMUIKit/QMUIComponents/QMUIMarqueeLabel (= 3.1.9)
  106 + - QMUIKit/QMUIComponents/QMUIModalPresentationViewController (= 3.1.9)
  107 + - QMUIKit/QMUIComponents/QMUIMoreOperationController (= 3.1.9)
  108 + - QMUIKit/QMUIComponents/QMUIMultipleDelegates (= 3.1.9)
  109 + - QMUIKit/QMUIComponents/QMUINavigationButton (= 3.1.9)
  110 + - QMUIKit/QMUIComponents/QMUINavigationTitleView (= 3.1.9)
  111 + - QMUIKit/QMUIComponents/QMUIOrderedDictionary (= 3.1.9)
  112 + - QMUIKit/QMUIComponents/QMUIPieProgressView (= 3.1.9)
  113 + - QMUIKit/QMUIComponents/QMUIPopupContainerView (= 3.1.9)
  114 + - QMUIKit/QMUIComponents/QMUIPopupMenuView (= 3.1.9)
  115 + - QMUIKit/QMUIComponents/QMUIScrollAnimator (= 3.1.9)
  116 + - QMUIKit/QMUIComponents/QMUISearchBar (= 3.1.9)
  117 + - QMUIKit/QMUIComponents/QMUISearchController (= 3.1.9)
  118 + - QMUIKit/QMUIComponents/QMUISegmentedControl (= 3.1.9)
  119 + - QMUIKit/QMUIComponents/QMUISlider (= 3.1.9)
  120 + - QMUIKit/QMUIComponents/QMUIStaticTableView (= 3.1.9)
  121 + - QMUIKit/QMUIComponents/QMUITableView (= 3.1.9)
  122 + - QMUIKit/QMUIComponents/QMUITableViewCell (= 3.1.9)
  123 + - QMUIKit/QMUIComponents/QMUITableViewHeaderFooterView (= 3.1.9)
  124 + - QMUIKit/QMUIComponents/QMUITableViewProtocols (= 3.1.9)
  125 + - QMUIKit/QMUIComponents/QMUITestView (= 3.1.9)
  126 + - QMUIKit/QMUIComponents/QMUITextField (= 3.1.9)
  127 + - QMUIKit/QMUIComponents/QMUITextView (= 3.1.9)
  128 + - QMUIKit/QMUIComponents/QMUITips (= 3.1.9)
  129 + - QMUIKit/QMUIComponents/QMUIToastView (= 3.1.9)
  130 + - QMUIKit/QMUIComponents/QMUIToolbarButton (= 3.1.9)
  131 + - QMUIKit/QMUIComponents/QMUIVisualEffectView (= 3.1.9)
  132 + - QMUIKit/QMUIComponents/QMUIZoomImageView (= 3.1.9)
  133 + - QMUIKit/QMUICore
  134 + - QMUIKit/QMUIComponents/NavigationBarTransition (3.1.9):
86 - QMUIKit/QMUIComponents/QMUINavigationTitleView 135 - QMUIKit/QMUIComponents/QMUINavigationTitleView
87 - QMUIKit/QMUICore 136 - QMUIKit/QMUICore
88 - QMUIKit/QMUIMainFrame 137 - QMUIKit/QMUIMainFrame
89 - - QMUIKit/QMUIComponents/QMUIAlertController (3.1.0): 138 + - QMUIKit/QMUIComponents/QMUIAlertController (3.1.9):
90 - QMUIKit/QMUIComponents/QMUIButton 139 - QMUIKit/QMUIComponents/QMUIButton
91 - QMUIKit/QMUIComponents/QMUIModalPresentationViewController 140 - QMUIKit/QMUIComponents/QMUIModalPresentationViewController
92 - QMUIKit/QMUIComponents/QMUITextField 141 - QMUIKit/QMUIComponents/QMUITextField
93 - QMUIKit/QMUICore 142 - QMUIKit/QMUICore
94 - - QMUIKit/QMUIComponents/QMUIAssetLibrary (3.1.0): 143 + - QMUIKit/QMUIComponents/QMUIAssetLibrary (3.1.9):
95 - QMUIKit/QMUICore 144 - QMUIKit/QMUICore
96 - - QMUIKit/QMUIComponents/QMUIBadge (3.1.0): 145 + - QMUIKit/QMUIComponents/QMUIBadge (3.1.9):
97 - QMUIKit/QMUIComponents/QMUILabel 146 - QMUIKit/QMUIComponents/QMUILabel
98 - QMUIKit/QMUICore 147 - QMUIKit/QMUICore
99 - - QMUIKit/QMUIComponents/QMUIButton (3.1.0): 148 + - QMUIKit/QMUIComponents/QMUIButton (3.1.9):
100 - QMUIKit/QMUICore 149 - QMUIKit/QMUICore
101 - - QMUIKit/QMUIComponents/QMUICAAnimationExtension (3.1.0): 150 + - QMUIKit/QMUIComponents/QMUICAAnimationExtension (3.1.9):
102 - QMUIKit/QMUIComponents/QMUIMultipleDelegates 151 - QMUIKit/QMUIComponents/QMUIMultipleDelegates
103 - QMUIKit/QMUICore 152 - QMUIKit/QMUICore
104 - - QMUIKit/QMUIComponents/QMUICellHeightCache (3.1.0): 153 + - QMUIKit/QMUIComponents/QMUICellHeightCache (3.1.9):
105 - QMUIKit/QMUIComponents/QMUITableViewProtocols 154 - QMUIKit/QMUIComponents/QMUITableViewProtocols
106 - QMUIKit/QMUICore 155 - QMUIKit/QMUICore
107 - - QMUIKit/QMUIComponents/QMUICellHeightKeyCache (3.1.0): 156 + - QMUIKit/QMUIComponents/QMUICellHeightKeyCache (3.1.9):
108 - QMUIKit/QMUIComponents/QMUIMultipleDelegates 157 - QMUIKit/QMUIComponents/QMUIMultipleDelegates
109 - QMUIKit/QMUIComponents/QMUITableViewProtocols 158 - QMUIKit/QMUIComponents/QMUITableViewProtocols
110 - QMUIKit/QMUICore 159 - QMUIKit/QMUICore
111 - - QMUIKit/QMUIComponents/QMUICellSizeKeyCache (3.1.0): 160 + - QMUIKit/QMUIComponents/QMUICellSizeKeyCache (3.1.9):
112 - QMUIKit/QMUIComponents/QMUIMultipleDelegates 161 - QMUIKit/QMUIComponents/QMUIMultipleDelegates
113 - QMUIKit/QMUICore 162 - QMUIKit/QMUICore
114 - - QMUIKit/QMUIComponents/QMUICollectionViewPagingLayout (3.1.0): 163 + - QMUIKit/QMUIComponents/QMUICollectionViewPagingLayout (3.1.9):
115 - QMUIKit/QMUICore 164 - QMUIKit/QMUICore
116 - - QMUIKit/QMUIComponents/QMUIConsole (3.1.0): 165 + - QMUIKit/QMUIComponents/QMUIConsole (3.1.9):
117 - QMUIKit/QMUIComponents/QMUIButton 166 - QMUIKit/QMUIComponents/QMUIButton
118 - QMUIKit/QMUIComponents/QMUICAAnimationExtension 167 - QMUIKit/QMUIComponents/QMUICAAnimationExtension
119 - QMUIKit/QMUIComponents/QMUIPopupMenuView 168 - QMUIKit/QMUIComponents/QMUIPopupMenuView
120 - QMUIKit/QMUIComponents/QMUITextField 169 - QMUIKit/QMUIComponents/QMUITextField
121 - QMUIKit/QMUIComponents/QMUITextView 170 - QMUIKit/QMUIComponents/QMUITextView
122 - QMUIKit/QMUICore 171 - QMUIKit/QMUICore
123 - - QMUIKit/QMUIComponents/QMUIDialogViewController (3.1.0): 172 + - QMUIKit/QMUIComponents/QMUIDialogViewController (3.1.9):
124 - QMUIKit/QMUIComponents/QMUIButton 173 - QMUIKit/QMUIComponents/QMUIButton
125 - QMUIKit/QMUIComponents/QMUILabel 174 - QMUIKit/QMUIComponents/QMUILabel
126 - QMUIKit/QMUIComponents/QMUIModalPresentationViewController 175 - QMUIKit/QMUIComponents/QMUIModalPresentationViewController
@@ -130,27 +179,27 @@ PODS: @@ -130,27 +179,27 @@ PODS:
130 - QMUIKit/QMUIComponents/QMUITextField 179 - QMUIKit/QMUIComponents/QMUITextField
131 - QMUIKit/QMUICore 180 - QMUIKit/QMUICore
132 - QMUIKit/QMUIMainFrame 181 - QMUIKit/QMUIMainFrame
133 - - QMUIKit/QMUIComponents/QMUIEmotionInputManager (3.1.0): 182 + - QMUIKit/QMUIComponents/QMUIEmotionInputManager (3.1.9):
134 - QMUIKit/QMUIComponents/QMUIEmotionView 183 - QMUIKit/QMUIComponents/QMUIEmotionView
135 - QMUIKit/QMUICore 184 - QMUIKit/QMUICore
136 - - QMUIKit/QMUIComponents/QMUIEmotionView (3.1.0): 185 + - QMUIKit/QMUIComponents/QMUIEmotionView (3.1.9):
137 - QMUIKit/QMUIComponents/QMUIButton 186 - QMUIKit/QMUIComponents/QMUIButton
138 - QMUIKit/QMUICore 187 - QMUIKit/QMUICore
139 - QMUIKit/QMUIResources 188 - QMUIKit/QMUIResources
140 - - QMUIKit/QMUIComponents/QMUIEmptyView (3.1.0): 189 + - QMUIKit/QMUIComponents/QMUIEmptyView (3.1.9):
141 - QMUIKit/QMUIComponents/QMUIButton 190 - QMUIKit/QMUIComponents/QMUIButton
142 - QMUIKit/QMUICore 191 - QMUIKit/QMUICore
143 - - QMUIKit/QMUIComponents/QMUIFillButton (3.1.0): 192 + - QMUIKit/QMUIComponents/QMUIFillButton (3.1.9):
144 - QMUIKit/QMUIComponents/QMUIButton 193 - QMUIKit/QMUIComponents/QMUIButton
145 - QMUIKit/QMUICore 194 - QMUIKit/QMUICore
146 - - QMUIKit/QMUIComponents/QMUIFloatLayoutView (3.1.0): 195 + - QMUIKit/QMUIComponents/QMUIFloatLayoutView (3.1.9):
147 - QMUIKit/QMUICore 196 - QMUIKit/QMUICore
148 - - QMUIKit/QMUIComponents/QMUIGhostButton (3.1.0): 197 + - QMUIKit/QMUIComponents/QMUIGhostButton (3.1.9):
149 - QMUIKit/QMUIComponents/QMUIButton 198 - QMUIKit/QMUIComponents/QMUIButton
150 - QMUIKit/QMUICore 199 - QMUIKit/QMUICore
151 - - QMUIKit/QMUIComponents/QMUIGridView (3.1.0): 200 + - QMUIKit/QMUIComponents/QMUIGridView (3.1.9):
152 - QMUIKit/QMUICore 201 - QMUIKit/QMUICore
153 - - QMUIKit/QMUIComponents/QMUIImagePickerLibrary (3.1.0): 202 + - QMUIKit/QMUIComponents/QMUIImagePickerLibrary (3.1.9):
154 - QMUIKit/QMUIComponents/QMUIAlertController 203 - QMUIKit/QMUIComponents/QMUIAlertController
155 - QMUIKit/QMUIComponents/QMUIAssetLibrary 204 - QMUIKit/QMUIComponents/QMUIAssetLibrary
156 - QMUIKit/QMUIComponents/QMUIButton 205 - QMUIKit/QMUIComponents/QMUIButton
@@ -162,7 +211,7 @@ PODS: @@ -162,7 +211,7 @@ PODS:
162 - QMUIKit/QMUICore 211 - QMUIKit/QMUICore
163 - QMUIKit/QMUIMainFrame 212 - QMUIKit/QMUIMainFrame
164 - QMUIKit/QMUIResources 213 - QMUIKit/QMUIResources
165 - - QMUIKit/QMUIComponents/QMUIImagePreviewView (3.1.0): 214 + - QMUIKit/QMUIComponents/QMUIImagePreviewView (3.1.9):
166 - QMUIKit/QMUIComponents/QMUIButton 215 - QMUIKit/QMUIComponents/QMUIButton
167 - QMUIKit/QMUIComponents/QMUICollectionViewPagingLayout 216 - QMUIKit/QMUIComponents/QMUICollectionViewPagingLayout
168 - QMUIKit/QMUIComponents/QMUIEmptyView 217 - QMUIKit/QMUIComponents/QMUIEmptyView
@@ -170,111 +219,111 @@ PODS: @@ -170,111 +219,111 @@ PODS:
170 - QMUIKit/QMUIComponents/QMUIZoomImageView 219 - QMUIKit/QMUIComponents/QMUIZoomImageView
171 - QMUIKit/QMUICore 220 - QMUIKit/QMUICore
172 - QMUIKit/QMUIMainFrame 221 - QMUIKit/QMUIMainFrame
173 - - QMUIKit/QMUIComponents/QMUIKeyboardManager (3.1.0): 222 + - QMUIKit/QMUIComponents/QMUIKeyboardManager (3.1.9):
174 - QMUIKit/QMUICore 223 - QMUIKit/QMUICore
175 - - QMUIKit/QMUIComponents/QMUILabel (3.1.0): 224 + - QMUIKit/QMUIComponents/QMUILabel (3.1.9):
176 - QMUIKit/QMUICore 225 - QMUIKit/QMUICore
177 - - QMUIKit/QMUIComponents/QMUILinkButton (3.1.0): 226 + - QMUIKit/QMUIComponents/QMUILinkButton (3.1.9):
178 - QMUIKit/QMUIComponents/QMUIButton 227 - QMUIKit/QMUIComponents/QMUIButton
179 - QMUIKit/QMUICore 228 - QMUIKit/QMUICore
180 - - QMUIKit/QMUIComponents/QMUILogManagerViewController (3.1.0): 229 + - QMUIKit/QMUIComponents/QMUILogManagerViewController (3.1.9):
181 - QMUIKit/QMUIComponents/QMUIPopupMenuView 230 - QMUIKit/QMUIComponents/QMUIPopupMenuView
182 - QMUIKit/QMUIComponents/QMUISearchController 231 - QMUIKit/QMUIComponents/QMUISearchController
183 - QMUIKit/QMUIComponents/QMUIStaticTableView 232 - QMUIKit/QMUIComponents/QMUIStaticTableView
184 - QMUIKit/QMUIComponents/QMUITableView 233 - QMUIKit/QMUIComponents/QMUITableView
185 - QMUIKit/QMUICore 234 - QMUIKit/QMUICore
186 - QMUIKit/QMUIMainFrame 235 - QMUIKit/QMUIMainFrame
187 - - QMUIKit/QMUIComponents/QMUILogWithConfigurationSupported (3.1.0): 236 + - QMUIKit/QMUIComponents/QMUILogWithConfigurationSupported (3.1.9):
188 - QMUIKit/QMUICore 237 - QMUIKit/QMUICore
189 - - QMUIKit/QMUIComponents/QMUIMarqueeLabel (3.1.0): 238 + - QMUIKit/QMUIComponents/QMUIMarqueeLabel (3.1.9):
190 - QMUIKit/QMUICore 239 - QMUIKit/QMUICore
191 - - QMUIKit/QMUIComponents/QMUIModalPresentationViewController (3.1.0): 240 + - QMUIKit/QMUIComponents/QMUIModalPresentationViewController (3.1.9):
192 - QMUIKit/QMUIComponents/QMUIKeyboardManager 241 - QMUIKit/QMUIComponents/QMUIKeyboardManager
193 - QMUIKit/QMUICore 242 - QMUIKit/QMUICore
194 - - QMUIKit/QMUIComponents/QMUIMoreOperationController (3.1.0): 243 + - QMUIKit/QMUIComponents/QMUIMoreOperationController (3.1.9):
195 - QMUIKit/QMUIComponents/QMUIButton 244 - QMUIKit/QMUIComponents/QMUIButton
196 - QMUIKit/QMUIComponents/QMUIModalPresentationViewController 245 - QMUIKit/QMUIComponents/QMUIModalPresentationViewController
197 - QMUIKit/QMUICore 246 - QMUIKit/QMUICore
198 - - QMUIKit/QMUIComponents/QMUIMultipleDelegates (3.1.0): 247 + - QMUIKit/QMUIComponents/QMUIMultipleDelegates (3.1.9):
199 - QMUIKit/QMUICore 248 - QMUIKit/QMUICore
200 - - QMUIKit/QMUIComponents/QMUINavigationButton (3.1.0): 249 + - QMUIKit/QMUIComponents/QMUINavigationButton (3.1.9):
201 - QMUIKit/QMUICore 250 - QMUIKit/QMUICore
202 - QMUIKit/QMUIMainFrame 251 - QMUIKit/QMUIMainFrame
203 - - QMUIKit/QMUIComponents/QMUINavigationTitleView (3.1.0): 252 + - QMUIKit/QMUIComponents/QMUINavigationTitleView (3.1.9):
204 - QMUIKit/QMUIComponents/QMUIButton 253 - QMUIKit/QMUIComponents/QMUIButton
205 - QMUIKit/QMUICore 254 - QMUIKit/QMUICore
206 - - QMUIKit/QMUIComponents/QMUIOrderedDictionary (3.1.0): 255 + - QMUIKit/QMUIComponents/QMUIOrderedDictionary (3.1.9):
207 - QMUIKit/QMUICore 256 - QMUIKit/QMUICore
208 - - QMUIKit/QMUIComponents/QMUIPieProgressView (3.1.0): 257 + - QMUIKit/QMUIComponents/QMUIPieProgressView (3.1.9):
209 - QMUIKit/QMUICore 258 - QMUIKit/QMUICore
210 - - QMUIKit/QMUIComponents/QMUIPopupContainerView (3.1.0): 259 + - QMUIKit/QMUIComponents/QMUIPopupContainerView (3.1.9):
211 - QMUIKit/QMUICore 260 - QMUIKit/QMUICore
212 - QMUIKit/QMUIMainFrame 261 - QMUIKit/QMUIMainFrame
213 - - QMUIKit/QMUIComponents/QMUIPopupMenuView (3.1.0): 262 + - QMUIKit/QMUIComponents/QMUIPopupMenuView (3.1.9):
214 - QMUIKit/QMUIComponents/QMUIButton 263 - QMUIKit/QMUIComponents/QMUIButton
215 - QMUIKit/QMUIComponents/QMUIPopupContainerView 264 - QMUIKit/QMUIComponents/QMUIPopupContainerView
216 - QMUIKit/QMUICore 265 - QMUIKit/QMUICore
217 - - QMUIKit/QMUIComponents/QMUIScrollAnimator (3.1.0): 266 + - QMUIKit/QMUIComponents/QMUIScrollAnimator (3.1.9):
218 - QMUIKit/QMUIComponents/QMUIMultipleDelegates 267 - QMUIKit/QMUIComponents/QMUIMultipleDelegates
219 - QMUIKit/QMUICore 268 - QMUIKit/QMUICore
220 - - QMUIKit/QMUIComponents/QMUISearchBar (3.1.0): 269 + - QMUIKit/QMUIComponents/QMUISearchBar (3.1.9):
221 - QMUIKit/QMUICore 270 - QMUIKit/QMUICore
222 - - QMUIKit/QMUIComponents/QMUISearchController (3.1.0): 271 + - QMUIKit/QMUIComponents/QMUISearchController (3.1.9):
223 - QMUIKit/QMUIComponents/QMUIEmptyView 272 - QMUIKit/QMUIComponents/QMUIEmptyView
224 - QMUIKit/QMUIComponents/QMUISearchBar 273 - QMUIKit/QMUIComponents/QMUISearchBar
225 - QMUIKit/QMUICore 274 - QMUIKit/QMUICore
226 - QMUIKit/QMUIMainFrame 275 - QMUIKit/QMUIMainFrame
227 - - QMUIKit/QMUIComponents/QMUISegmentedControl (3.1.0): 276 + - QMUIKit/QMUIComponents/QMUISegmentedControl (3.1.9):
228 - QMUIKit/QMUICore 277 - QMUIKit/QMUICore
229 - - QMUIKit/QMUIComponents/QMUISlider (3.1.0): 278 + - QMUIKit/QMUIComponents/QMUISlider (3.1.9):
230 - QMUIKit/QMUICore 279 - QMUIKit/QMUICore
231 - - QMUIKit/QMUIComponents/QMUIStaticTableView (3.1.0): 280 + - QMUIKit/QMUIComponents/QMUIStaticTableView (3.1.9):
232 - QMUIKit/QMUIComponents/QMUIMultipleDelegates 281 - QMUIKit/QMUIComponents/QMUIMultipleDelegates
233 - QMUIKit/QMUIComponents/QMUITableViewCell 282 - QMUIKit/QMUIComponents/QMUITableViewCell
234 - QMUIKit/QMUICore 283 - QMUIKit/QMUICore
235 - - QMUIKit/QMUIComponents/QMUITableView (3.1.0): 284 + - QMUIKit/QMUIComponents/QMUITableView (3.1.9):
236 - QMUIKit/QMUIComponents/QMUITableViewProtocols 285 - QMUIKit/QMUIComponents/QMUITableViewProtocols
237 - QMUIKit/QMUICore 286 - QMUIKit/QMUICore
238 - - QMUIKit/QMUIComponents/QMUITableViewCell (3.1.0): 287 + - QMUIKit/QMUIComponents/QMUITableViewCell (3.1.9):
239 - QMUIKit/QMUIComponents/QMUIButton 288 - QMUIKit/QMUIComponents/QMUIButton
240 - QMUIKit/QMUICore 289 - QMUIKit/QMUICore
241 - - QMUIKit/QMUIComponents/QMUITableViewHeaderFooterView (3.1.0): 290 + - QMUIKit/QMUIComponents/QMUITableViewHeaderFooterView (3.1.9):
242 - QMUIKit/QMUICore 291 - QMUIKit/QMUICore
243 - - QMUIKit/QMUIComponents/QMUITableViewProtocols (3.1.0): 292 + - QMUIKit/QMUIComponents/QMUITableViewProtocols (3.1.9):
244 - QMUIKit/QMUICore 293 - QMUIKit/QMUICore
245 - - QMUIKit/QMUIComponents/QMUITestView (3.1.0): 294 + - QMUIKit/QMUIComponents/QMUITestView (3.1.9):
246 - QMUIKit/QMUICore 295 - QMUIKit/QMUICore
247 - - QMUIKit/QMUIComponents/QMUITextField (3.1.0): 296 + - QMUIKit/QMUIComponents/QMUITextField (3.1.9):
248 - QMUIKit/QMUIComponents/QMUIMultipleDelegates 297 - QMUIKit/QMUIComponents/QMUIMultipleDelegates
249 - QMUIKit/QMUICore 298 - QMUIKit/QMUICore
250 - - QMUIKit/QMUIComponents/QMUITextView (3.1.0): 299 + - QMUIKit/QMUIComponents/QMUITextView (3.1.9):
251 - QMUIKit/QMUIComponents/QMUILabel 300 - QMUIKit/QMUIComponents/QMUILabel
252 - QMUIKit/QMUIComponents/QMUIMultipleDelegates 301 - QMUIKit/QMUIComponents/QMUIMultipleDelegates
253 - QMUIKit/QMUICore 302 - QMUIKit/QMUICore
254 - - QMUIKit/QMUIComponents/QMUITips (3.1.0): 303 + - QMUIKit/QMUIComponents/QMUITips (3.1.9):
255 - QMUIKit/QMUIComponents/QMUIToastView 304 - QMUIKit/QMUIComponents/QMUIToastView
256 - QMUIKit/QMUICore 305 - QMUIKit/QMUICore
257 - QMUIKit/QMUIResources 306 - QMUIKit/QMUIResources
258 - - QMUIKit/QMUIComponents/QMUIToastView (3.1.0): 307 + - QMUIKit/QMUIComponents/QMUIToastView (3.1.9):
259 - QMUIKit/QMUIComponents/QMUIKeyboardManager 308 - QMUIKit/QMUIComponents/QMUIKeyboardManager
260 - QMUIKit/QMUIComponents/QMUIVisualEffectView 309 - QMUIKit/QMUIComponents/QMUIVisualEffectView
261 - QMUIKit/QMUICore 310 - QMUIKit/QMUICore
262 - - QMUIKit/QMUIComponents/QMUIToolbarButton (3.1.0): 311 + - QMUIKit/QMUIComponents/QMUIToolbarButton (3.1.9):
263 - QMUIKit/QMUICore 312 - QMUIKit/QMUICore
264 - - QMUIKit/QMUIComponents/QMUIVisualEffectView (3.1.0): 313 + - QMUIKit/QMUIComponents/QMUIVisualEffectView (3.1.9):
265 - QMUIKit/QMUICore 314 - QMUIKit/QMUICore
266 - - QMUIKit/QMUIComponents/QMUIZoomImageView (3.1.0): 315 + - QMUIKit/QMUIComponents/QMUIZoomImageView (3.1.9):
267 - QMUIKit/QMUIComponents/QMUIAssetLibrary 316 - QMUIKit/QMUIComponents/QMUIAssetLibrary
268 - QMUIKit/QMUIComponents/QMUIButton 317 - QMUIKit/QMUIComponents/QMUIButton
269 - QMUIKit/QMUIComponents/QMUIEmptyView 318 - QMUIKit/QMUIComponents/QMUIEmptyView
270 - QMUIKit/QMUIComponents/QMUIPieProgressView 319 - QMUIKit/QMUIComponents/QMUIPieProgressView
271 - QMUIKit/QMUIComponents/QMUISlider 320 - QMUIKit/QMUIComponents/QMUISlider
272 - QMUIKit/QMUICore 321 - QMUIKit/QMUICore
273 - - QMUIKit/QMUICore (3.1.0): 322 + - QMUIKit/QMUICore (3.1.9):
274 - QMUIKit/QMUILog 323 - QMUIKit/QMUILog
275 - QMUIKit/QMUIWeakObjectContainer 324 - QMUIKit/QMUIWeakObjectContainer
276 - - QMUIKit/QMUILog (3.1.0)  
277 - - QMUIKit/QMUIMainFrame (3.1.0): 325 + - QMUIKit/QMUILog (3.1.9)
  326 + - QMUIKit/QMUIMainFrame (3.1.9):
278 - QMUIKit/QMUIComponents/QMUIEmptyView 327 - QMUIKit/QMUIComponents/QMUIEmptyView
279 - QMUIKit/QMUIComponents/QMUIKeyboardManager 328 - QMUIKit/QMUIComponents/QMUIKeyboardManager
280 - QMUIKit/QMUIComponents/QMUIMultipleDelegates 329 - QMUIKit/QMUIComponents/QMUIMultipleDelegates
@@ -283,31 +332,42 @@ PODS: @@ -283,31 +332,42 @@ PODS:
283 - QMUIKit/QMUIComponents/QMUITableViewHeaderFooterView 332 - QMUIKit/QMUIComponents/QMUITableViewHeaderFooterView
284 - QMUIKit/QMUICore 333 - QMUIKit/QMUICore
285 - QMUIKit/QMUILog 334 - QMUIKit/QMUILog
286 - - QMUIKit/QMUIResources (3.1.0)  
287 - - QMUIKit/QMUIWeakObjectContainer (3.1.0)  
288 - - SDWebImage (4.4.3):  
289 - - SDWebImage/Core (= 4.4.3)  
290 - - SDWebImage/Core (4.4.3) 335 + - QMUIKit/QMUIResources (3.1.9)
  336 + - QMUIKit/QMUIWeakObjectContainer (3.1.9)
  337 + - SDWebImage (4.4.6):
  338 + - SDWebImage/Core (= 4.4.6)
  339 + - SDWebImage/Core (4.4.6)
291 340
292 DEPENDENCIES: 341 DEPENDENCIES:
293 - CNLiveAVCamera 342 - CNLiveAVCamera
294 - CNLiveBaseKit 343 - CNLiveBaseKit
295 - CNLiveCommonCategory 344 - CNLiveCommonCategory
  345 + - CNLiveCommonClass
296 - CNLiveCoreMediator 346 - CNLiveCoreMediator
  347 + - CNLiveCoreMediator_ModuleDiseaseAction
297 - CNLiveDisease (from `../`) 348 - CNLiveDisease (from `../`)
298 - CNLiveImagePickerController 349 - CNLiveImagePickerController
  350 + - CNLiveRequestBastKit
  351 + - CNLiveTripartiteManagement/Masonry
  352 + - CNLiveTripartiteManagement/QMUIKit
299 - FLAnimatedImage 353 - FLAnimatedImage
300 - - Masonry  
301 - - QMUIKit (~> 3.1.0)  
302 354
303 SPEC REPOS: 355 SPEC REPOS:
304 http://bj.gitlab.cnlive.com/ios-team/CNLiveRepos.git: 356 http://bj.gitlab.cnlive.com/ios-team/CNLiveRepos.git:
305 - CNLiveAVCamera 357 - CNLiveAVCamera
306 - CNLiveBaseKit 358 - CNLiveBaseKit
  359 + - CNLiveBusinessTools
307 - CNLiveCommonCategory 360 - CNLiveCommonCategory
  361 + - CNLiveCommonClass
308 - CNLiveCoreMediator 362 - CNLiveCoreMediator
  363 + - CNLiveCoreMediator_ModuleDiseaseAction
  364 + - CNLiveEnvironmentConfiguration
309 - CNLiveImagePickerController 365 - CNLiveImagePickerController
  366 + - CNLiveRequestBastKit
  367 + - CNLiveTripartiteManagement
  368 + - CNLiveUserManagement
310 https://github.com/cocoapods/specs.git: 369 https://github.com/cocoapods/specs.git:
  370 + - AFNetworking
311 - FLAnimatedImage 371 - FLAnimatedImage
312 - Masonry 372 - Masonry
313 - MJExtension 373 - MJExtension
@@ -319,18 +379,26 @@ EXTERNAL SOURCES: @@ -319,18 +379,26 @@ EXTERNAL SOURCES:
319 :path: "../" 379 :path: "../"
320 380
321 SPEC CHECKSUMS: 381 SPEC CHECKSUMS:
322 - CNLiveAVCamera: 7f3eba8eb1827f6e7a5047b0bb9f9f0bf19d1451 382 + AFNetworking: b6f891fdfaed196b46c7a83cf209e09697b94057
  383 + CNLiveAVCamera: bad4d78fa537222e3e0fcc31b19e4930de634104
323 CNLiveBaseKit: 09a97c3411a91270fb68bfe20a1df2cdbcd2c524 384 CNLiveBaseKit: 09a97c3411a91270fb68bfe20a1df2cdbcd2c524
324 - CNLiveCommonCategory: 57cb8422ccf17ba5cc8fffe76851fa828c367d06  
325 - CNLiveCoreMediator: 0b76225bcbbf99427065545e2a7616092ddc8758  
326 - CNLiveDisease: 39bbf8f961684fe70f04ca69111a1b9bdcedc498 385 + CNLiveBusinessTools: b857e84e14bc733bf06d75a058aa703377dfafe0
  386 + CNLiveCommonCategory: 4d061e148d1d85f0fafce51e5d255a517c951210
  387 + CNLiveCommonClass: c60e0443c5b3beaa333d3e51e165c45f5462a241
  388 + CNLiveCoreMediator: 964e2d5ea765d4b1137ff3e8fc72f83bbdf3bb74
  389 + CNLiveCoreMediator_ModuleDiseaseAction: 8c0efd14e4107995ba961d139796d9c411c97911
  390 + CNLiveDisease: 21a578262c766dc1c7ebbb550b3b761239a41314
  391 + CNLiveEnvironmentConfiguration: 732c15a6cb3e33190cffbd14d3d66572e7ea35b1
327 CNLiveImagePickerController: 2be3ac0a75563f5945101ee6e0a787ad2fc15549 392 CNLiveImagePickerController: 2be3ac0a75563f5945101ee6e0a787ad2fc15549
  393 + CNLiveRequestBastKit: 4922b3ef5db96e61e56cabf951db72f5b25ed748
  394 + CNLiveTripartiteManagement: 5fdbdfb7472654e93e3b7dae90cc2b8c679811f8
  395 + CNLiveUserManagement: b0f28a8506d664af5df59af979c61cea9e5ce0e2
328 FLAnimatedImage: 4a0b56255d9b05f18b6dd7ee06871be5d3b89e31 396 FLAnimatedImage: 4a0b56255d9b05f18b6dd7ee06871be5d3b89e31
329 Masonry: 7c429b56da9d4ee0bbb3ed77a5ea710d6a5df39e 397 Masonry: 7c429b56da9d4ee0bbb3ed77a5ea710d6a5df39e
330 MJExtension: 19bc33ce2eee2d319760f5622562cf581a6ff756 398 MJExtension: 19bc33ce2eee2d319760f5622562cf581a6ff756
331 - QMUIKit: 33959d093f48bb64f754ad696c310887a0768c49  
332 - SDWebImage: c5594f1a19c48d526d321e548902b56b479cd508 399 + QMUIKit: d8e5ce25b33d78020fdc504f3762e197a61b9640
  400 + SDWebImage: 3f3f0c02f09798048c47a5ed0a13f17b063572d8
333 401
334 -PODFILE CHECKSUM: 31f3a02ae28a4e7c45ea480d7911df763de8f06d 402 +PODFILE CHECKSUM: 5a155cc771b283b2aa6d92652b809b0580e3632e
335 403
336 COCOAPODS: 1.5.3 404 COCOAPODS: 1.5.3