Commit 5cb34116def6c5fe9491573044a954b5fcd59755
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 = @"Cell"; | @@ -25,22 +25,12 @@ static NSString *cellID = @"Cell"; | ||
| 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 = @"Cell"; | @@ -80,10 +70,10 @@ static NSString *cellID = @"Cell"; | ||
| 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 = @"Cell"; | @@ -99,8 +89,8 @@ static NSString *cellID = @"Cell"; | ||
| 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, '9.0' | @@ -9,25 +9,30 @@ platform :ios, '9.0' | ||
| 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
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
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
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/UIViewExtension/UIView+CNGradienLayer.h deleted
100644 → 0
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 |