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 | 2 | Pod::Spec.new do |s| |
| 3 | 3 | s.name = 'CNLiveDisease' |
| 4 | - s.version = '0.0.9' | |
| 4 | + s.version = '0.1.0' | |
| 5 | 5 | s.summary = '智慧农业部分组件化' |
| 6 | 6 | |
| 7 | 7 | s.description = <<-DESC |
| ... | ... | @@ -17,7 +17,7 @@ TODO: Add long description of the pod here. |
| 17 | 17 | |
| 18 | 18 | s.ios.deployment_target = '9.0' |
| 19 | 19 | |
| 20 | - s.source_files = 'CNLiveDisease/Classes/**/*' | |
| 20 | + #s.source_files = 'CNLiveDisease/Classes/**/*' | |
| 21 | 21 | |
| 22 | 22 | s.resource_bundles = { |
| 23 | 23 | 'CNLiveDisease' => ['CNLiveDisease/Assets/Assets.xcassets'] |
| ... | ... | @@ -25,14 +25,23 @@ TODO: Add long description of the pod here. |
| 25 | 25 | |
| 26 | 26 | # s.public_header_files = 'Pod/Classes/**/*.h' |
| 27 | 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 | 47 | end | ... | ... |
CNLiveDisease/Classes/Controller/CNLiveDiseaseController.h
| ... | ... | @@ -5,11 +5,10 @@ |
| 5 | 5 | // Created by 殷巧娟 on 2019/1/23. |
| 6 | 6 | // |
| 7 | 7 | |
| 8 | -#import <UIKit/UIKit.h> | |
| 9 | - | |
| 8 | +#import "CNCommonViewController.h" | |
| 10 | 9 | NS_ASSUME_NONNULL_BEGIN |
| 11 | 10 | |
| 12 | -@interface CNLiveDiseaseController : UIViewController | |
| 11 | +@interface CNLiveDiseaseController : CNCommonViewController | |
| 13 | 12 | @end |
| 14 | 13 | |
| 15 | 14 | NS_ASSUME_NONNULL_END | ... | ... |
CNLiveDisease/Classes/Controller/CNLiveDiseaseController.m
| ... | ... | @@ -7,36 +7,30 @@ |
| 7 | 7 | |
| 8 | 8 | #import "CNLiveDiseaseController.h" |
| 9 | 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 | 12 | #import "CNLiveFriutViewController.h" |
| 13 | +#import "UIColor+CNLiveExtension.h" | |
| 13 | 14 | #define TotalTitleCount 3 |
| 14 | 15 | #define Segment_Height 53 |
| 15 | 16 | @interface CNLiveDiseaseController ()<UIScrollViewDelegate,CNLiveDiseaseSegmentDelegate> |
| 16 | 17 | @property (nonatomic, strong) UIScrollView *scrollView; |
| 17 | 18 | @property (nonatomic, strong) CNLiveDiseaseSegment *segmentView; |
| 18 | -@property (nonatomic, assign) BOOL isAppReview; | |
| 19 | 19 | @end |
| 20 | 20 | |
| 21 | 21 | @implementation CNLiveDiseaseController |
| 22 | 22 | |
| 23 | 23 | - (void)viewDidLoad { |
| 24 | 24 | [super viewDidLoad]; |
| 25 | - self.view.backgroundColor = [UIColor whiteColor]; | |
| 25 | + self.title = @"农业智能"; | |
| 26 | 26 | [self setUpSegment]; |
| 27 | 27 | [self.view addSubview:self.scrollView]; |
| 28 | 28 | CGFloat width = KScreenWidth; |
| 29 | 29 | CGFloat height = KScreenHeight - kNavigationBarHeight - Segment_Height; |
| 30 | 30 | CNLiveFriutViewController *vc = [[CNLiveFriutViewController alloc]init]; |
| 31 | 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 | 34 | [self addChildViewController:vc]; |
| 41 | 35 | vc.view.frame = CGRectMake(0, 0, width, height); |
| 42 | 36 | [self.scrollView addSubview:vc.view]; |
| ... | ... | @@ -55,19 +49,19 @@ |
| 55 | 49 | vegetableVc.view.frame = CGRectMake(width *2, 0, width, height); |
| 56 | 50 | [self.scrollView addSubview:vegetableVc.view]; |
| 57 | 51 | } |
| 58 | -- (void)setUpSegment { | |
| 52 | +-(void)setUpSegment { | |
| 59 | 53 | self.segmentView = [[CNLiveDiseaseSegment alloc]initWithFrame:CGRectMake(0, kNavigationBarHeight, KScreenWidth, Segment_Height)]; |
| 60 | 54 | self.segmentView.delegate = self; |
| 61 | 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 | 58 | self.segmentView.tagTextFont_normal = 15; |
| 65 | 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 | 62 | self.segmentView.sliderH = 1; |
| 68 | 63 | [self.view addSubview:self.segmentView]; |
| 69 | 64 | } |
| 70 | - | |
| 71 | 65 | -(UIScrollView *)scrollView { |
| 72 | 66 | if (!_scrollView) { |
| 73 | 67 | _scrollView = [[UIScrollView alloc]initWithFrame:CGRectMake(0, kNavigationBarHeight + Segment_Height, KScreenWidth, KScreenHeight - kNavigationBarHeight - Segment_Height)]; |
| ... | ... | @@ -78,8 +72,6 @@ |
| 78 | 72 | _scrollView.bounces = NO; |
| 79 | 73 | _scrollView.delegate = self; |
| 80 | 74 | _scrollView.scrollEnabled = YES; |
| 81 | - _scrollView.backgroundColor = [UIColor whiteColor]; | |
| 82 | - // _scrollView.backgroundColor = [UIColor cyanColor]; | |
| 83 | 75 | } |
| 84 | 76 | return _scrollView; |
| 85 | 77 | } |
| ... | ... | @@ -96,5 +88,4 @@ |
| 96 | 88 | [self.segmentView selectingOneTagWithIndex:selectedIndx]; |
| 97 | 89 | } |
| 98 | 90 | |
| 99 | - | |
| 100 | 91 | @end | ... | ... |
CNLiveDisease/Classes/Controller/CNLiveDiseaseDescController.h
| ... | ... | @@ -5,11 +5,11 @@ |
| 5 | 5 | // Created by 殷巧娟 on 2019/1/25. |
| 6 | 6 | // |
| 7 | 7 | |
| 8 | -#import <QMUIKit/QMUIKit.h> | |
| 8 | +#import "CNCommonViewController.h" | |
| 9 | 9 | |
| 10 | 10 | NS_ASSUME_NONNULL_BEGIN |
| 11 | 11 | |
| 12 | -@interface CNLiveDiseaseDescController : QMUICommonViewController | |
| 12 | +@interface CNLiveDiseaseDescController : CNCommonViewController | |
| 13 | 13 | |
| 14 | 14 | @property (strong, nonatomic) NSDictionary * dataDict; |
| 15 | 15 | @end | ... | ... |
CNLiveDisease/Classes/Controller/CNLiveDiseaseDescController.m
| ... | ... | @@ -7,9 +7,10 @@ |
| 7 | 7 | |
| 8 | 8 | #import "CNLiveDiseaseDescController.h" |
| 9 | 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 | 14 | #define MJWeakSelf __weak typeof(self) weakSelf = self; |
| 14 | 15 | @interface CNLiveDiseaseDescController ()<WKNavigationDelegate,WKUIDelegate> |
| 15 | 16 | { | ... | ... |
CNLiveDisease/Classes/Controller/CNLiveDiseaseFailedController.h
| ... | ... | @@ -5,11 +5,11 @@ |
| 5 | 5 | // Created by 殷巧娟 on 2019/1/25. |
| 6 | 6 | // |
| 7 | 7 | |
| 8 | -#import <QMUIKit/QMUIKit.h> | |
| 8 | +#import "CNCommonViewController.h" | |
| 9 | 9 | |
| 10 | 10 | NS_ASSUME_NONNULL_BEGIN |
| 11 | 11 | |
| 12 | -@interface CNLiveDiseaseFailedController : QMUICommonViewController | |
| 12 | +@interface CNLiveDiseaseFailedController : CNCommonViewController | |
| 13 | 13 | @property (nonatomic, copy) NSString *name; |
| 14 | 14 | @property (nonatomic, copy) NSString *introduction; |
| 15 | 15 | @end | ... | ... |
CNLiveDisease/Classes/Controller/CNLiveFriutViewController.h
| ... | ... | @@ -5,15 +5,15 @@ |
| 5 | 5 | // Created by 殷巧娟 on 2019/1/24. |
| 6 | 6 | // |
| 7 | 7 | |
| 8 | -#import <QMUIKit/QMUIKit.h> | |
| 8 | +#import "CNCommonViewController.h" | |
| 9 | 9 | |
| 10 | 10 | NS_ASSUME_NONNULL_BEGIN |
| 11 | 11 | |
| 12 | -@interface CNLiveFriutViewController : QMUICommonViewController | |
| 12 | +@interface CNLiveFriutViewController : CNCommonViewController | |
| 13 | 13 | -(void)setIndex:(NSInteger)index; |
| 14 | 14 | @property (nonatomic, strong) NSArray *imageArray; |
| 15 | 15 | @property (nonatomic, strong) NSArray *titleArray; |
| 16 | -@property (nonatomic, assign) BOOL isAppReview; //这个应该从appdelegate那里传过来 | |
| 16 | + | |
| 17 | 17 | @end |
| 18 | 18 | |
| 19 | 19 | NS_ASSUME_NONNULL_END | ... | ... |
CNLiveDisease/Classes/Controller/CNLiveFriutViewController.m
| ... | ... | @@ -8,8 +8,8 @@ |
| 8 | 8 | #import "CNLiveFriutViewController.h" |
| 9 | 9 | #import "CNDiseaseViewCell.h" |
| 10 | 10 | #import "CNDiseaseType.h" |
| 11 | -#import <CNLiveBaseKit/CNLiveBaseKit.h> | |
| 12 | -#import <QMUIKit/QMUIKit.h> | |
| 11 | +#import "CNLiveBaseKit.h" | |
| 12 | +#import "QMUIKit.h" | |
| 13 | 13 | #import "CNLiveSelectedViewController.h" |
| 14 | 14 | #import "CNLiveGetImage.h" |
| 15 | 15 | static NSString *cellID = @"Cell"; |
| ... | ... | @@ -25,22 +25,12 @@ static NSString *cellID = @"Cell"; |
| 25 | 25 | } |
| 26 | 26 | |
| 27 | 27 | -(void)setIndex:(NSInteger)index { |
| 28 | - | |
| 29 | - self.isAppReview = YES; | |
| 30 | 28 | if (index == 0) { |
| 31 | 29 | [self setUpCollectionView]; |
| 32 | 30 | }else if (index == 1) { |
| 33 | - if (self.isAppReview) { | |
| 34 | - [self setUpCollectionView]; | |
| 35 | - }else { | |
| 36 | - [self addEmptyView]; | |
| 37 | - } | |
| 31 | + [self addEmptyView]; | |
| 38 | 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 | 70 | if (cell ==nil) { |
| 81 | 71 | cell = [[CNDiseaseViewCell alloc]init]; |
| 82 | 72 | } |
| 83 | -// cell.backgroundColor = [UIColor cyanColor]; | |
| 84 | 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 | 77 | cell.titleLabel.text = self.titleArray[indexPath.row]; |
| 88 | 78 | return cell; |
| 89 | 79 | } |
| ... | ... | @@ -99,8 +89,8 @@ static NSString *cellID = @"Cell"; |
| 99 | 89 | |
| 100 | 90 | selectVc.titleName = self.titleArray[indexPath.row]; |
| 101 | 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 | 96 | -(void)setCNNoDataEmptyView { | ... | ... |
CNLiveDisease/Classes/Controller/CNLiveSelectedViewController.h
| ... | ... | @@ -5,11 +5,11 @@ |
| 5 | 5 | // Created by 殷巧娟 on 2019/1/24. |
| 6 | 6 | // |
| 7 | 7 | |
| 8 | -#import <QMUIKit/QMUIKit.h> | |
| 8 | +#import "CNCommonViewController.h" | |
| 9 | 9 | |
| 10 | 10 | NS_ASSUME_NONNULL_BEGIN |
| 11 | 11 | |
| 12 | -@interface CNLiveSelectedViewController : QMUICommonViewController | |
| 12 | +@interface CNLiveSelectedViewController : CNCommonViewController | |
| 13 | 13 | @property (nonatomic, copy) NSString *imageName; |
| 14 | 14 | @property (nonatomic, copy) NSString *titleName; |
| 15 | 15 | @end | ... | ... |
CNLiveDisease/Classes/Controller/CNLiveSelectedViewController.m
| ... | ... | @@ -8,15 +8,23 @@ |
| 8 | 8 | #import "CNLiveSelectedViewController.h" |
| 9 | 9 | #import <AssetsLibrary/AssetsLibrary.h> |
| 10 | 10 | #import <Photos/Photos.h> |
| 11 | -#import <CNLiveImagePickerController/TZImagePickerController.h> | |
| 11 | +#import "TZImagePickerController.h" | |
| 12 | 12 | #import "CNDiseaseType.h" |
| 13 | -#import <CNLiveAVCamera/XFCameraController.h> | |
| 13 | +#import "XFCameraController.h" | |
| 14 | 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 | 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 | 28 | @interface CNLiveSelectedViewController () <TZImagePickerControllerDelegate> |
| 21 | 29 | @property (nonatomic, strong) UIImageView *selectImageV; |
| 22 | 30 | @property (nonatomic, strong) UIButton *photoBtn; |
| ... | ... | @@ -29,7 +37,8 @@ |
| 29 | 37 | self.view.backgroundColor = [UIColor whiteColor]; |
| 30 | 38 | [self setUPViews]; |
| 31 | 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 | 43 | NSLog(@"打印这个页面走了吗"); |
| 35 | 44 | } |
| ... | ... | @@ -45,7 +54,12 @@ |
| 45 | 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 | 55 | switch (didRow) { |
| 47 | 56 | case 0:{ |
| 57 | +// if ([CNAudioOrVideoMananger IsEnter]) {//在房间 | |
| 58 | +// [QMUITips showWithText:@"音视频通话中..." inView:AppKeyWindow hideAfterDelay:1.5]; | |
| 59 | +// return; | |
| 60 | +// } | |
| 48 | 61 | [weakSelf takeToXFPhoto]; |
| 62 | + | |
| 49 | 63 | } |
| 50 | 64 | break; |
| 51 | 65 | case 1:{ |
| ... | ... | @@ -57,20 +71,29 @@ |
| 57 | 71 | } |
| 58 | 72 | }]; |
| 59 | 73 | } |
| 60 | - | |
| 61 | 74 | #pragma mark - 跳转到自定义相机 |
| 62 | 75 | -(void)takeToXFPhoto { |
| 63 | 76 | XFCameraController *cameraController = [[XFCameraController alloc]init]; |
| 64 | 77 | |
| 65 | 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 | 90 | __weak XFCameraController *weakCameraController = cameraController; |
| 67 | 91 | cameraController.takePhotosCompletionBlock = ^(UIImage *image, NSError *error) { |
| 68 | 92 | if (!error) { |
| 69 | 93 | [self didFinishSelectPhotoWithImage:image]; |
| 70 | 94 | } |
| 71 | - | |
| 72 | 95 | dispatch_async(dispatch_get_main_queue(), ^{ |
| 73 | - [weakCameraController dismissViewControllerAnimated:YES completion:nil]; | |
| 96 | + [weakCameraController dismissViewControllerAnimated:YES completion:nil]; | |
| 74 | 97 | }); |
| 75 | 98 | }; |
| 76 | 99 | [self presentViewController:cameraController animated:YES completion:nil]; |
| ... | ... | @@ -98,7 +121,7 @@ |
| 98 | 121 | assetModel = [models lastObject]; |
| 99 | 122 | } |
| 100 | 123 | dispatch_async(dispatch_get_main_queue(), ^{ |
| 101 | - self.selectImageV.image = image; | |
| 124 | + self.selectImageV.image = image; | |
| 102 | 125 | }); |
| 103 | 126 | [self getUpFieldList:image]; |
| 104 | 127 | |
| ... | ... | @@ -108,65 +131,113 @@ |
| 108 | 131 | }]; |
| 109 | 132 | } |
| 110 | 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 | 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 | 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 | 232 | -(void)setUpLayout { |
| 161 | 233 | MJWeakSelf; |
| 162 | - | |
| 163 | 234 | [_backImageV mas_makeConstraints:^(MASConstraintMaker *make) { |
| 164 | 235 | make.top.left.right.bottom.mas_equalTo(self.view); |
| 165 | 236 | }]; |
| 166 | 237 | [_selectImageV mas_makeConstraints:^(MASConstraintMaker *make) { |
| 167 | 238 | make.centerX.mas_equalTo(weakSelf.view.mas_centerX); |
| 168 | 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 | 242 | [_photoBtn mas_makeConstraints:^(MASConstraintMaker *make) { |
| 172 | 243 | make.top.mas_equalTo(weakSelf.selectImageV.mas_bottom).offset(30); |
| ... | ... | @@ -175,38 +246,34 @@ |
| 175 | 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 | 249 | -(UIImageView *)selectImageV { |
| 194 | - | |
| 195 | 250 | if (!_selectImageV) { |
| 196 | 251 | _selectImageV = [[UIImageView alloc]init]; |
| 197 | 252 | _selectImageV.contentMode = UIViewContentModeScaleAspectFill; |
| 198 | 253 | _selectImageV.clipsToBounds = YES; |
| 199 | -// _selectImageV.backgroundColor = [UIColor cyanColor]; | |
| 200 | 254 | } |
| 201 | 255 | return _selectImageV; |
| 202 | 256 | } |
| 203 | 257 | -(UIButton *)photoBtn { |
| 204 | 258 | if (!_photoBtn) { |
| 205 | 259 | _photoBtn = [UIButton buttonWithType:UIButtonTypeCustom]; |
| 206 | - // [_photoBtn setImage:[UIImage imageNamed:@"farming_release"] forState:UIControlStateNormal]; | |
| 260 | +// [_photoBtn setImage:[UIImage imageNamed:@"farming_release"] forState:UIControlStateNormal]; | |
| 207 | 261 | [_photoBtn setImage:[CNLiveGetImage getImageName:[NSString stringWithFormat:@"farming_release"]] forState:UIControlStateNormal]; |
| 262 | +// [_photoBtn setTitle:@"从相册选择" forState:UIControlStateNormal]; | |
| 208 | 263 | [_photoBtn addTarget:self action:@selector(photoBtnClick) forControlEvents:UIControlEventTouchUpInside]; |
| 209 | 264 | } |
| 210 | 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 | 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 | 8 | #import <Foundation/Foundation.h> |
| 9 | 9 | #import "CNLiveDiseaseController.h" |
| 10 | 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 | 14 | @end |
| 16 | 15 | |
| 17 | 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 | 11 | CNLiveDiseaseController *vc = [[CNLiveDiseaseController alloc]init]; |
| 13 | 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 | 7 | // |
| 8 | 8 | |
| 9 | 9 | #import "CNDiseaseViewCell.h" |
| 10 | -#import <Masonry/Masonry.h> | |
| 11 | -#import <CNLiveBaseKit/UIView+Extension.h> | |
| 10 | +#import "Masonry.h" | |
| 11 | +#import "CNLiveDefinesHeader.h" | |
| 12 | 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 | 13 | @implementation CNDiseaseViewCell |
| 15 | 14 | -(instancetype)initWithFrame:(CGRect)frame { |
| 16 | 15 | self = [super initWithFrame:frame]; | ... | ... |
CNLiveDisease/Classes/View/CNLiveGetImage.m
| ... | ... | @@ -14,8 +14,39 @@ |
| 14 | 14 | NSURL *url = [bundle URLForResource:@"CNLiveDisease" withExtension:@"bundle"]; |
| 15 | 15 | NSBundle *targetBundle = [NSBundle bundleWithURL:url]; |
| 16 | 16 | UIImage *image = [UIImage imageNamed:imageName inBundle:targetBundle compatibleWithTraitCollection:nil]; |
| 17 | + | |
| 17 | 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 | 52 | @end | ... | ... |
Example/CNLiveDisease.xcodeproj/project.pbxproj
| ... | ... | @@ -307,12 +307,19 @@ |
| 307 | 307 | ); |
| 308 | 308 | inputPaths = ( |
| 309 | 309 | "${SRCROOT}/Pods/Target Support Files/Pods-CNLiveDisease_Example/Pods-CNLiveDisease_Example-frameworks.sh", |
| 310 | + "${BUILT_PRODUCTS_DIR}/AFNetworking/AFNetworking.framework", | |
| 310 | 311 | "${BUILT_PRODUCTS_DIR}/CNLiveAVCamera/CNLiveAVCamera.framework", |
| 311 | 312 | "${BUILT_PRODUCTS_DIR}/CNLiveBaseKit/CNLiveBaseKit.framework", |
| 313 | + "${BUILT_PRODUCTS_DIR}/CNLiveBusinessTools/CNLiveBusinessTools.framework", | |
| 312 | 314 | "${BUILT_PRODUCTS_DIR}/CNLiveCommonCategory/CNLiveCommonCategory.framework", |
| 315 | + "${BUILT_PRODUCTS_DIR}/CNLiveCommonClass/CNLiveCommonClass.framework", | |
| 313 | 316 | "${BUILT_PRODUCTS_DIR}/CNLiveCoreMediator/CNLiveCoreMediator.framework", |
| 317 | + "${BUILT_PRODUCTS_DIR}/CNLiveCoreMediator_ModuleDiseaseAction/CNLiveCoreMediator_ModuleDiseaseAction.framework", | |
| 314 | 318 | "${BUILT_PRODUCTS_DIR}/CNLiveDisease/CNLiveDisease.framework", |
| 315 | 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 | 323 | "${BUILT_PRODUCTS_DIR}/FLAnimatedImage/FLAnimatedImage.framework", |
| 317 | 324 | "${BUILT_PRODUCTS_DIR}/MJExtension/MJExtension.framework", |
| 318 | 325 | "${BUILT_PRODUCTS_DIR}/Masonry/Masonry.framework", |
| ... | ... | @@ -323,12 +330,19 @@ |
| 323 | 330 | outputFileListPaths = ( |
| 324 | 331 | ); |
| 325 | 332 | outputPaths = ( |
| 333 | + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AFNetworking.framework", | |
| 326 | 334 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveAVCamera.framework", |
| 327 | 335 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveBaseKit.framework", |
| 336 | + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveBusinessTools.framework", | |
| 328 | 337 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveCommonCategory.framework", |
| 338 | + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveCommonClass.framework", | |
| 329 | 339 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveCoreMediator.framework", |
| 340 | + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveCoreMediator_ModuleDiseaseAction.framework", | |
| 330 | 341 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveDisease.framework", |
| 331 | 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 | 346 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FLAnimatedImage.framework", |
| 333 | 347 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MJExtension.framework", |
| 334 | 348 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/Masonry.framework", |
| ... | ... | @@ -349,11 +363,18 @@ |
| 349 | 363 | ); |
| 350 | 364 | inputPaths = ( |
| 351 | 365 | "${SRCROOT}/Pods/Target Support Files/Pods-CNLiveDisease_Tests/Pods-CNLiveDisease_Tests-frameworks.sh", |
| 366 | + "${BUILT_PRODUCTS_DIR}/AFNetworking/AFNetworking.framework", | |
| 352 | 367 | "${BUILT_PRODUCTS_DIR}/CNLiveAVCamera/CNLiveAVCamera.framework", |
| 353 | 368 | "${BUILT_PRODUCTS_DIR}/CNLiveBaseKit/CNLiveBaseKit.framework", |
| 369 | + "${BUILT_PRODUCTS_DIR}/CNLiveBusinessTools/CNLiveBusinessTools.framework", | |
| 354 | 370 | "${BUILT_PRODUCTS_DIR}/CNLiveCommonCategory/CNLiveCommonCategory.framework", |
| 371 | + "${BUILT_PRODUCTS_DIR}/CNLiveCommonClass/CNLiveCommonClass.framework", | |
| 355 | 372 | "${BUILT_PRODUCTS_DIR}/CNLiveCoreMediator/CNLiveCoreMediator.framework", |
| 373 | + "${BUILT_PRODUCTS_DIR}/CNLiveCoreMediator_ModuleDiseaseAction/CNLiveCoreMediator_ModuleDiseaseAction.framework", | |
| 356 | 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 | 378 | "${BUILT_PRODUCTS_DIR}/FLAnimatedImage/FLAnimatedImage.framework", |
| 358 | 379 | "${BUILT_PRODUCTS_DIR}/MJExtension/MJExtension.framework", |
| 359 | 380 | "${BUILT_PRODUCTS_DIR}/Masonry/Masonry.framework", |
| ... | ... | @@ -364,11 +385,18 @@ |
| 364 | 385 | outputFileListPaths = ( |
| 365 | 386 | ); |
| 366 | 387 | outputPaths = ( |
| 388 | + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AFNetworking.framework", | |
| 367 | 389 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveAVCamera.framework", |
| 368 | 390 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveBaseKit.framework", |
| 391 | + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveBusinessTools.framework", | |
| 369 | 392 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveCommonCategory.framework", |
| 393 | + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveCommonClass.framework", | |
| 370 | 394 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveCoreMediator.framework", |
| 395 | + "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/CNLiveCoreMediator_ModuleDiseaseAction.framework", | |
| 371 | 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 | 400 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FLAnimatedImage.framework", |
| 373 | 401 | "${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MJExtension.framework", |
| 374 | 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 | |
| 13 | 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 | 21 | // Override point for customization after application launch. |
| 22 | 22 | return YES; |
| 23 | 23 | } | ... | ... |
Example/CNLiveDisease/CNLiveDisease-Info.plist
| ... | ... | @@ -22,8 +22,16 @@ |
| 22 | 22 | <string>????</string> |
| 23 | 23 | <key>CFBundleVersion</key> |
| 24 | 24 | <string>1.0</string> |
| 25 | + <key>LSApplicationCategoryType</key> | |
| 26 | + <string></string> | |
| 25 | 27 | <key>LSRequiresIPhoneOS</key> |
| 26 | 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 | 35 | <key>UILaunchStoryboardName</key> |
| 28 | 36 | <string>LaunchScreen</string> |
| 29 | 37 | <key>UIMainStoryboardFile</key> | ... | ... |
Example/CNLiveDisease/CNLiveViewController.m
| ... | ... | @@ -7,8 +7,7 @@ |
| 7 | 7 | // |
| 8 | 8 | |
| 9 | 9 | #import "CNLiveViewController.h" |
| 10 | - | |
| 11 | -#import "CNLiveCoreMediator+A.h" | |
| 10 | +#import "CNLiveCoreMediator+ModuleDiseaseAction.h" | |
| 12 | 11 | @interface CNLiveViewController () |
| 13 | 12 | @property (nonatomic, strong) UIButton *testButton; |
| 14 | 13 | @end |
| ... | ... | @@ -35,11 +34,11 @@ |
| 35 | 34 | -(void)testButtonClicked { |
| 36 | 35 | // CNLiveDiseaseController *vc = [[CNLiveDiseaseController alloc]init]; |
| 37 | 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 | 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 | 44 | - (void)didReceiveMemoryWarning | ... | ... |
Example/Podfile
| ... | ... | @@ -9,25 +9,30 @@ platform :ios, '9.0' |
| 9 | 9 | target 'CNLiveDisease_Example' do |
| 10 | 10 | pod 'CNLiveDisease', :path => '../' |
| 11 | 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 | 15 | pod 'CNLiveImagePickerController' |
| 16 | - pod 'CNLiveAVCamera' | |
| 16 | + pod 'CNLiveAVCamera' | |
| 17 | 17 | # pod 'CNLiveUploadManager' |
| 18 | 18 | pod 'FLAnimatedImage' |
| 19 | 19 | pod 'CNLiveCoreMediator' |
| 20 | + pod 'CNLiveCommonClass' | |
| 21 | + pod 'CNLiveRequestBastKit' | |
| 22 | + pod 'CNLiveCoreMediator_ModuleDiseaseAction' | |
| 20 | 23 | target 'CNLiveDisease_Tests' do |
| 21 | 24 | inherit! :search_paths |
| 22 | 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 | 29 | pod 'CNLiveImagePickerController' |
| 27 | 30 | pod 'CNLiveAVCamera' |
| 28 | 31 | # pod 'CNLiveUploadManager' |
| 29 | 32 | pod 'FLAnimatedImage' |
| 30 | 33 | pod 'CNLiveCoreMediator' |
| 31 | - | |
| 34 | + pod 'CNLiveCommonClass' | |
| 35 | + pod 'CNLiveRequestBastKit' | |
| 36 | + pod 'CNLiveCoreMediator_ModuleDiseaseAction' | |
| 32 | 37 | end |
| 33 | 38 | end | ... | ... |
Example/Podfile.lock
| 1 | 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 | 21 | - Masonry (~> 1.0.2) |
| 22 | + - QMUIKit (~> 3.1.7) | |
| 4 | 23 | - CNLiveBaseKit (0.1.8): |
| 5 | 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 | 42 | - CNLiveAVCamera |
| 11 | 43 | - CNLiveBaseKit |
| 12 | 44 | - CNLiveCommonCategory |
| 13 | - - CNLiveCoreMediator | |
| 45 | + - CNLiveCommonClass | |
| 46 | + - CNLiveCoreMediator_ModuleDiseaseAction | |
| 47 | + - CNLiveDisease/View | |
| 14 | 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 | 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 | 68 | - FLAnimatedImage (1.0.12) |
| 20 | 69 | - Masonry (1.0.2) |
| 21 | 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 | 135 | - QMUIKit/QMUIComponents/QMUINavigationTitleView |
| 87 | 136 | - QMUIKit/QMUICore |
| 88 | 137 | - QMUIKit/QMUIMainFrame |
| 89 | - - QMUIKit/QMUIComponents/QMUIAlertController (3.1.0): | |
| 138 | + - QMUIKit/QMUIComponents/QMUIAlertController (3.1.9): | |
| 90 | 139 | - QMUIKit/QMUIComponents/QMUIButton |
| 91 | 140 | - QMUIKit/QMUIComponents/QMUIModalPresentationViewController |
| 92 | 141 | - QMUIKit/QMUIComponents/QMUITextField |
| 93 | 142 | - QMUIKit/QMUICore |
| 94 | - - QMUIKit/QMUIComponents/QMUIAssetLibrary (3.1.0): | |
| 143 | + - QMUIKit/QMUIComponents/QMUIAssetLibrary (3.1.9): | |
| 95 | 144 | - QMUIKit/QMUICore |
| 96 | - - QMUIKit/QMUIComponents/QMUIBadge (3.1.0): | |
| 145 | + - QMUIKit/QMUIComponents/QMUIBadge (3.1.9): | |
| 97 | 146 | - QMUIKit/QMUIComponents/QMUILabel |
| 98 | 147 | - QMUIKit/QMUICore |
| 99 | - - QMUIKit/QMUIComponents/QMUIButton (3.1.0): | |
| 148 | + - QMUIKit/QMUIComponents/QMUIButton (3.1.9): | |
| 100 | 149 | - QMUIKit/QMUICore |
| 101 | - - QMUIKit/QMUIComponents/QMUICAAnimationExtension (3.1.0): | |
| 150 | + - QMUIKit/QMUIComponents/QMUICAAnimationExtension (3.1.9): | |
| 102 | 151 | - QMUIKit/QMUIComponents/QMUIMultipleDelegates |
| 103 | 152 | - QMUIKit/QMUICore |
| 104 | - - QMUIKit/QMUIComponents/QMUICellHeightCache (3.1.0): | |
| 153 | + - QMUIKit/QMUIComponents/QMUICellHeightCache (3.1.9): | |
| 105 | 154 | - QMUIKit/QMUIComponents/QMUITableViewProtocols |
| 106 | 155 | - QMUIKit/QMUICore |
| 107 | - - QMUIKit/QMUIComponents/QMUICellHeightKeyCache (3.1.0): | |
| 156 | + - QMUIKit/QMUIComponents/QMUICellHeightKeyCache (3.1.9): | |
| 108 | 157 | - QMUIKit/QMUIComponents/QMUIMultipleDelegates |
| 109 | 158 | - QMUIKit/QMUIComponents/QMUITableViewProtocols |
| 110 | 159 | - QMUIKit/QMUICore |
| 111 | - - QMUIKit/QMUIComponents/QMUICellSizeKeyCache (3.1.0): | |
| 160 | + - QMUIKit/QMUIComponents/QMUICellSizeKeyCache (3.1.9): | |
| 112 | 161 | - QMUIKit/QMUIComponents/QMUIMultipleDelegates |
| 113 | 162 | - QMUIKit/QMUICore |
| 114 | - - QMUIKit/QMUIComponents/QMUICollectionViewPagingLayout (3.1.0): | |
| 163 | + - QMUIKit/QMUIComponents/QMUICollectionViewPagingLayout (3.1.9): | |
| 115 | 164 | - QMUIKit/QMUICore |
| 116 | - - QMUIKit/QMUIComponents/QMUIConsole (3.1.0): | |
| 165 | + - QMUIKit/QMUIComponents/QMUIConsole (3.1.9): | |
| 117 | 166 | - QMUIKit/QMUIComponents/QMUIButton |
| 118 | 167 | - QMUIKit/QMUIComponents/QMUICAAnimationExtension |
| 119 | 168 | - QMUIKit/QMUIComponents/QMUIPopupMenuView |
| 120 | 169 | - QMUIKit/QMUIComponents/QMUITextField |
| 121 | 170 | - QMUIKit/QMUIComponents/QMUITextView |
| 122 | 171 | - QMUIKit/QMUICore |
| 123 | - - QMUIKit/QMUIComponents/QMUIDialogViewController (3.1.0): | |
| 172 | + - QMUIKit/QMUIComponents/QMUIDialogViewController (3.1.9): | |
| 124 | 173 | - QMUIKit/QMUIComponents/QMUIButton |
| 125 | 174 | - QMUIKit/QMUIComponents/QMUILabel |
| 126 | 175 | - QMUIKit/QMUIComponents/QMUIModalPresentationViewController |
| ... | ... | @@ -130,27 +179,27 @@ PODS: |
| 130 | 179 | - QMUIKit/QMUIComponents/QMUITextField |
| 131 | 180 | - QMUIKit/QMUICore |
| 132 | 181 | - QMUIKit/QMUIMainFrame |
| 133 | - - QMUIKit/QMUIComponents/QMUIEmotionInputManager (3.1.0): | |
| 182 | + - QMUIKit/QMUIComponents/QMUIEmotionInputManager (3.1.9): | |
| 134 | 183 | - QMUIKit/QMUIComponents/QMUIEmotionView |
| 135 | 184 | - QMUIKit/QMUICore |
| 136 | - - QMUIKit/QMUIComponents/QMUIEmotionView (3.1.0): | |
| 185 | + - QMUIKit/QMUIComponents/QMUIEmotionView (3.1.9): | |
| 137 | 186 | - QMUIKit/QMUIComponents/QMUIButton |
| 138 | 187 | - QMUIKit/QMUICore |
| 139 | 188 | - QMUIKit/QMUIResources |
| 140 | - - QMUIKit/QMUIComponents/QMUIEmptyView (3.1.0): | |
| 189 | + - QMUIKit/QMUIComponents/QMUIEmptyView (3.1.9): | |
| 141 | 190 | - QMUIKit/QMUIComponents/QMUIButton |
| 142 | 191 | - QMUIKit/QMUICore |
| 143 | - - QMUIKit/QMUIComponents/QMUIFillButton (3.1.0): | |
| 192 | + - QMUIKit/QMUIComponents/QMUIFillButton (3.1.9): | |
| 144 | 193 | - QMUIKit/QMUIComponents/QMUIButton |
| 145 | 194 | - QMUIKit/QMUICore |
| 146 | - - QMUIKit/QMUIComponents/QMUIFloatLayoutView (3.1.0): | |
| 195 | + - QMUIKit/QMUIComponents/QMUIFloatLayoutView (3.1.9): | |
| 147 | 196 | - QMUIKit/QMUICore |
| 148 | - - QMUIKit/QMUIComponents/QMUIGhostButton (3.1.0): | |
| 197 | + - QMUIKit/QMUIComponents/QMUIGhostButton (3.1.9): | |
| 149 | 198 | - QMUIKit/QMUIComponents/QMUIButton |
| 150 | 199 | - QMUIKit/QMUICore |
| 151 | - - QMUIKit/QMUIComponents/QMUIGridView (3.1.0): | |
| 200 | + - QMUIKit/QMUIComponents/QMUIGridView (3.1.9): | |
| 152 | 201 | - QMUIKit/QMUICore |
| 153 | - - QMUIKit/QMUIComponents/QMUIImagePickerLibrary (3.1.0): | |
| 202 | + - QMUIKit/QMUIComponents/QMUIImagePickerLibrary (3.1.9): | |
| 154 | 203 | - QMUIKit/QMUIComponents/QMUIAlertController |
| 155 | 204 | - QMUIKit/QMUIComponents/QMUIAssetLibrary |
| 156 | 205 | - QMUIKit/QMUIComponents/QMUIButton |
| ... | ... | @@ -162,7 +211,7 @@ PODS: |
| 162 | 211 | - QMUIKit/QMUICore |
| 163 | 212 | - QMUIKit/QMUIMainFrame |
| 164 | 213 | - QMUIKit/QMUIResources |
| 165 | - - QMUIKit/QMUIComponents/QMUIImagePreviewView (3.1.0): | |
| 214 | + - QMUIKit/QMUIComponents/QMUIImagePreviewView (3.1.9): | |
| 166 | 215 | - QMUIKit/QMUIComponents/QMUIButton |
| 167 | 216 | - QMUIKit/QMUIComponents/QMUICollectionViewPagingLayout |
| 168 | 217 | - QMUIKit/QMUIComponents/QMUIEmptyView |
| ... | ... | @@ -170,111 +219,111 @@ PODS: |
| 170 | 219 | - QMUIKit/QMUIComponents/QMUIZoomImageView |
| 171 | 220 | - QMUIKit/QMUICore |
| 172 | 221 | - QMUIKit/QMUIMainFrame |
| 173 | - - QMUIKit/QMUIComponents/QMUIKeyboardManager (3.1.0): | |
| 222 | + - QMUIKit/QMUIComponents/QMUIKeyboardManager (3.1.9): | |
| 174 | 223 | - QMUIKit/QMUICore |
| 175 | - - QMUIKit/QMUIComponents/QMUILabel (3.1.0): | |
| 224 | + - QMUIKit/QMUIComponents/QMUILabel (3.1.9): | |
| 176 | 225 | - QMUIKit/QMUICore |
| 177 | - - QMUIKit/QMUIComponents/QMUILinkButton (3.1.0): | |
| 226 | + - QMUIKit/QMUIComponents/QMUILinkButton (3.1.9): | |
| 178 | 227 | - QMUIKit/QMUIComponents/QMUIButton |
| 179 | 228 | - QMUIKit/QMUICore |
| 180 | - - QMUIKit/QMUIComponents/QMUILogManagerViewController (3.1.0): | |
| 229 | + - QMUIKit/QMUIComponents/QMUILogManagerViewController (3.1.9): | |
| 181 | 230 | - QMUIKit/QMUIComponents/QMUIPopupMenuView |
| 182 | 231 | - QMUIKit/QMUIComponents/QMUISearchController |
| 183 | 232 | - QMUIKit/QMUIComponents/QMUIStaticTableView |
| 184 | 233 | - QMUIKit/QMUIComponents/QMUITableView |
| 185 | 234 | - QMUIKit/QMUICore |
| 186 | 235 | - QMUIKit/QMUIMainFrame |
| 187 | - - QMUIKit/QMUIComponents/QMUILogWithConfigurationSupported (3.1.0): | |
| 236 | + - QMUIKit/QMUIComponents/QMUILogWithConfigurationSupported (3.1.9): | |
| 188 | 237 | - QMUIKit/QMUICore |
| 189 | - - QMUIKit/QMUIComponents/QMUIMarqueeLabel (3.1.0): | |
| 238 | + - QMUIKit/QMUIComponents/QMUIMarqueeLabel (3.1.9): | |
| 190 | 239 | - QMUIKit/QMUICore |
| 191 | - - QMUIKit/QMUIComponents/QMUIModalPresentationViewController (3.1.0): | |
| 240 | + - QMUIKit/QMUIComponents/QMUIModalPresentationViewController (3.1.9): | |
| 192 | 241 | - QMUIKit/QMUIComponents/QMUIKeyboardManager |
| 193 | 242 | - QMUIKit/QMUICore |
| 194 | - - QMUIKit/QMUIComponents/QMUIMoreOperationController (3.1.0): | |
| 243 | + - QMUIKit/QMUIComponents/QMUIMoreOperationController (3.1.9): | |
| 195 | 244 | - QMUIKit/QMUIComponents/QMUIButton |
| 196 | 245 | - QMUIKit/QMUIComponents/QMUIModalPresentationViewController |
| 197 | 246 | - QMUIKit/QMUICore |
| 198 | - - QMUIKit/QMUIComponents/QMUIMultipleDelegates (3.1.0): | |
| 247 | + - QMUIKit/QMUIComponents/QMUIMultipleDelegates (3.1.9): | |
| 199 | 248 | - QMUIKit/QMUICore |
| 200 | - - QMUIKit/QMUIComponents/QMUINavigationButton (3.1.0): | |
| 249 | + - QMUIKit/QMUIComponents/QMUINavigationButton (3.1.9): | |
| 201 | 250 | - QMUIKit/QMUICore |
| 202 | 251 | - QMUIKit/QMUIMainFrame |
| 203 | - - QMUIKit/QMUIComponents/QMUINavigationTitleView (3.1.0): | |
| 252 | + - QMUIKit/QMUIComponents/QMUINavigationTitleView (3.1.9): | |
| 204 | 253 | - QMUIKit/QMUIComponents/QMUIButton |
| 205 | 254 | - QMUIKit/QMUICore |
| 206 | - - QMUIKit/QMUIComponents/QMUIOrderedDictionary (3.1.0): | |
| 255 | + - QMUIKit/QMUIComponents/QMUIOrderedDictionary (3.1.9): | |
| 207 | 256 | - QMUIKit/QMUICore |
| 208 | - - QMUIKit/QMUIComponents/QMUIPieProgressView (3.1.0): | |
| 257 | + - QMUIKit/QMUIComponents/QMUIPieProgressView (3.1.9): | |
| 209 | 258 | - QMUIKit/QMUICore |
| 210 | - - QMUIKit/QMUIComponents/QMUIPopupContainerView (3.1.0): | |
| 259 | + - QMUIKit/QMUIComponents/QMUIPopupContainerView (3.1.9): | |
| 211 | 260 | - QMUIKit/QMUICore |
| 212 | 261 | - QMUIKit/QMUIMainFrame |
| 213 | - - QMUIKit/QMUIComponents/QMUIPopupMenuView (3.1.0): | |
| 262 | + - QMUIKit/QMUIComponents/QMUIPopupMenuView (3.1.9): | |
| 214 | 263 | - QMUIKit/QMUIComponents/QMUIButton |
| 215 | 264 | - QMUIKit/QMUIComponents/QMUIPopupContainerView |
| 216 | 265 | - QMUIKit/QMUICore |
| 217 | - - QMUIKit/QMUIComponents/QMUIScrollAnimator (3.1.0): | |
| 266 | + - QMUIKit/QMUIComponents/QMUIScrollAnimator (3.1.9): | |
| 218 | 267 | - QMUIKit/QMUIComponents/QMUIMultipleDelegates |
| 219 | 268 | - QMUIKit/QMUICore |
| 220 | - - QMUIKit/QMUIComponents/QMUISearchBar (3.1.0): | |
| 269 | + - QMUIKit/QMUIComponents/QMUISearchBar (3.1.9): | |
| 221 | 270 | - QMUIKit/QMUICore |
| 222 | - - QMUIKit/QMUIComponents/QMUISearchController (3.1.0): | |
| 271 | + - QMUIKit/QMUIComponents/QMUISearchController (3.1.9): | |
| 223 | 272 | - QMUIKit/QMUIComponents/QMUIEmptyView |
| 224 | 273 | - QMUIKit/QMUIComponents/QMUISearchBar |
| 225 | 274 | - QMUIKit/QMUICore |
| 226 | 275 | - QMUIKit/QMUIMainFrame |
| 227 | - - QMUIKit/QMUIComponents/QMUISegmentedControl (3.1.0): | |
| 276 | + - QMUIKit/QMUIComponents/QMUISegmentedControl (3.1.9): | |
| 228 | 277 | - QMUIKit/QMUICore |
| 229 | - - QMUIKit/QMUIComponents/QMUISlider (3.1.0): | |
| 278 | + - QMUIKit/QMUIComponents/QMUISlider (3.1.9): | |
| 230 | 279 | - QMUIKit/QMUICore |
| 231 | - - QMUIKit/QMUIComponents/QMUIStaticTableView (3.1.0): | |
| 280 | + - QMUIKit/QMUIComponents/QMUIStaticTableView (3.1.9): | |
| 232 | 281 | - QMUIKit/QMUIComponents/QMUIMultipleDelegates |
| 233 | 282 | - QMUIKit/QMUIComponents/QMUITableViewCell |
| 234 | 283 | - QMUIKit/QMUICore |
| 235 | - - QMUIKit/QMUIComponents/QMUITableView (3.1.0): | |
| 284 | + - QMUIKit/QMUIComponents/QMUITableView (3.1.9): | |
| 236 | 285 | - QMUIKit/QMUIComponents/QMUITableViewProtocols |
| 237 | 286 | - QMUIKit/QMUICore |
| 238 | - - QMUIKit/QMUIComponents/QMUITableViewCell (3.1.0): | |
| 287 | + - QMUIKit/QMUIComponents/QMUITableViewCell (3.1.9): | |
| 239 | 288 | - QMUIKit/QMUIComponents/QMUIButton |
| 240 | 289 | - QMUIKit/QMUICore |
| 241 | - - QMUIKit/QMUIComponents/QMUITableViewHeaderFooterView (3.1.0): | |
| 290 | + - QMUIKit/QMUIComponents/QMUITableViewHeaderFooterView (3.1.9): | |
| 242 | 291 | - QMUIKit/QMUICore |
| 243 | - - QMUIKit/QMUIComponents/QMUITableViewProtocols (3.1.0): | |
| 292 | + - QMUIKit/QMUIComponents/QMUITableViewProtocols (3.1.9): | |
| 244 | 293 | - QMUIKit/QMUICore |
| 245 | - - QMUIKit/QMUIComponents/QMUITestView (3.1.0): | |
| 294 | + - QMUIKit/QMUIComponents/QMUITestView (3.1.9): | |
| 246 | 295 | - QMUIKit/QMUICore |
| 247 | - - QMUIKit/QMUIComponents/QMUITextField (3.1.0): | |
| 296 | + - QMUIKit/QMUIComponents/QMUITextField (3.1.9): | |
| 248 | 297 | - QMUIKit/QMUIComponents/QMUIMultipleDelegates |
| 249 | 298 | - QMUIKit/QMUICore |
| 250 | - - QMUIKit/QMUIComponents/QMUITextView (3.1.0): | |
| 299 | + - QMUIKit/QMUIComponents/QMUITextView (3.1.9): | |
| 251 | 300 | - QMUIKit/QMUIComponents/QMUILabel |
| 252 | 301 | - QMUIKit/QMUIComponents/QMUIMultipleDelegates |
| 253 | 302 | - QMUIKit/QMUICore |
| 254 | - - QMUIKit/QMUIComponents/QMUITips (3.1.0): | |
| 303 | + - QMUIKit/QMUIComponents/QMUITips (3.1.9): | |
| 255 | 304 | - QMUIKit/QMUIComponents/QMUIToastView |
| 256 | 305 | - QMUIKit/QMUICore |
| 257 | 306 | - QMUIKit/QMUIResources |
| 258 | - - QMUIKit/QMUIComponents/QMUIToastView (3.1.0): | |
| 307 | + - QMUIKit/QMUIComponents/QMUIToastView (3.1.9): | |
| 259 | 308 | - QMUIKit/QMUIComponents/QMUIKeyboardManager |
| 260 | 309 | - QMUIKit/QMUIComponents/QMUIVisualEffectView |
| 261 | 310 | - QMUIKit/QMUICore |
| 262 | - - QMUIKit/QMUIComponents/QMUIToolbarButton (3.1.0): | |
| 311 | + - QMUIKit/QMUIComponents/QMUIToolbarButton (3.1.9): | |
| 263 | 312 | - QMUIKit/QMUICore |
| 264 | - - QMUIKit/QMUIComponents/QMUIVisualEffectView (3.1.0): | |
| 313 | + - QMUIKit/QMUIComponents/QMUIVisualEffectView (3.1.9): | |
| 265 | 314 | - QMUIKit/QMUICore |
| 266 | - - QMUIKit/QMUIComponents/QMUIZoomImageView (3.1.0): | |
| 315 | + - QMUIKit/QMUIComponents/QMUIZoomImageView (3.1.9): | |
| 267 | 316 | - QMUIKit/QMUIComponents/QMUIAssetLibrary |
| 268 | 317 | - QMUIKit/QMUIComponents/QMUIButton |
| 269 | 318 | - QMUIKit/QMUIComponents/QMUIEmptyView |
| 270 | 319 | - QMUIKit/QMUIComponents/QMUIPieProgressView |
| 271 | 320 | - QMUIKit/QMUIComponents/QMUISlider |
| 272 | 321 | - QMUIKit/QMUICore |
| 273 | - - QMUIKit/QMUICore (3.1.0): | |
| 322 | + - QMUIKit/QMUICore (3.1.9): | |
| 274 | 323 | - QMUIKit/QMUILog |
| 275 | 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 | 327 | - QMUIKit/QMUIComponents/QMUIEmptyView |
| 279 | 328 | - QMUIKit/QMUIComponents/QMUIKeyboardManager |
| 280 | 329 | - QMUIKit/QMUIComponents/QMUIMultipleDelegates |
| ... | ... | @@ -283,31 +332,42 @@ PODS: |
| 283 | 332 | - QMUIKit/QMUIComponents/QMUITableViewHeaderFooterView |
| 284 | 333 | - QMUIKit/QMUICore |
| 285 | 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 | 341 | DEPENDENCIES: |
| 293 | 342 | - CNLiveAVCamera |
| 294 | 343 | - CNLiveBaseKit |
| 295 | 344 | - CNLiveCommonCategory |
| 345 | + - CNLiveCommonClass | |
| 296 | 346 | - CNLiveCoreMediator |
| 347 | + - CNLiveCoreMediator_ModuleDiseaseAction | |
| 297 | 348 | - CNLiveDisease (from `../`) |
| 298 | 349 | - CNLiveImagePickerController |
| 350 | + - CNLiveRequestBastKit | |
| 351 | + - CNLiveTripartiteManagement/Masonry | |
| 352 | + - CNLiveTripartiteManagement/QMUIKit | |
| 299 | 353 | - FLAnimatedImage |
| 300 | - - Masonry | |
| 301 | - - QMUIKit (~> 3.1.0) | |
| 302 | 354 | |
| 303 | 355 | SPEC REPOS: |
| 304 | 356 | http://bj.gitlab.cnlive.com/ios-team/CNLiveRepos.git: |
| 305 | 357 | - CNLiveAVCamera |
| 306 | 358 | - CNLiveBaseKit |
| 359 | + - CNLiveBusinessTools | |
| 307 | 360 | - CNLiveCommonCategory |
| 361 | + - CNLiveCommonClass | |
| 308 | 362 | - CNLiveCoreMediator |
| 363 | + - CNLiveCoreMediator_ModuleDiseaseAction | |
| 364 | + - CNLiveEnvironmentConfiguration | |
| 309 | 365 | - CNLiveImagePickerController |
| 366 | + - CNLiveRequestBastKit | |
| 367 | + - CNLiveTripartiteManagement | |
| 368 | + - CNLiveUserManagement | |
| 310 | 369 | https://github.com/cocoapods/specs.git: |
| 370 | + - AFNetworking | |
| 311 | 371 | - FLAnimatedImage |
| 312 | 372 | - Masonry |
| 313 | 373 | - MJExtension |
| ... | ... | @@ -319,18 +379,26 @@ EXTERNAL SOURCES: |
| 319 | 379 | :path: "../" |
| 320 | 380 | |
| 321 | 381 | SPEC CHECKSUMS: |
| 322 | - CNLiveAVCamera: 7f3eba8eb1827f6e7a5047b0bb9f9f0bf19d1451 | |
| 382 | + AFNetworking: b6f891fdfaed196b46c7a83cf209e09697b94057 | |
| 383 | + CNLiveAVCamera: bad4d78fa537222e3e0fcc31b19e4930de634104 | |
| 323 | 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 | 392 | CNLiveImagePickerController: 2be3ac0a75563f5945101ee6e0a787ad2fc15549 |
| 393 | + CNLiveRequestBastKit: 4922b3ef5db96e61e56cabf951db72f5b25ed748 | |
| 394 | + CNLiveTripartiteManagement: 5fdbdfb7472654e93e3b7dae90cc2b8c679811f8 | |
| 395 | + CNLiveUserManagement: b0f28a8506d664af5df59af979c61cea9e5ce0e2 | |
| 328 | 396 | FLAnimatedImage: 4a0b56255d9b05f18b6dd7ee06871be5d3b89e31 |
| 329 | 397 | Masonry: 7c429b56da9d4ee0bbb3ed77a5ea710d6a5df39e |
| 330 | 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 | 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 | 42 | |
| 43 | 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 | 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 | 103 | // output buffer. |
| 104 | 104 | // |
| 105 | 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 | 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 | 112 | // returns the encoded buffer. Must be free'd by caller. Length is given by |
| 113 | -// outputLength. | |
| 113 | +// outputLength. | |
| 114 | 114 | // |
| 115 | 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 | 119 | #define MAX_NUM_PADDING_CHARS 2 |
| 120 | 120 | #define OUTPUT_LINE_LENGTH 64 |
| 121 | 121 | #define INPUT_LINE_LENGTH ((OUTPUT_LINE_LENGTH / BASE64_UNIT_SIZE) * BINARY_UNIT_SIZE) |
| 122 | 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 | 128 | ((length / BINARY_UNIT_SIZE) |
| 129 | 129 | + ((length % BINARY_UNIT_SIZE) ? 1 : 0)) |
| 130 | 130 | * BASE64_UNIT_SIZE; |
| 131 | - if (separateLines) | |
| 132 | - { | |
| 133 | - outputBufferSize += | |
| 131 | + if (separateLines) | |
| 132 | + { | |
| 133 | + outputBufferSize += | |
| 134 | 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 | 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 | 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 | 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 | 225 | |
| 226 | 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 | 236 | - (NSString *)base64EncodedString |
| 237 | 237 | { |
| 238 | - size_t outputLength = 0; | |
| 239 | - char *outputBuffer = | |
| 238 | + size_t outputLength = 0; | |
| 239 | + char *outputBuffer = | |
| 240 | 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 | 257 | */ |
| 258 | 258 | |
| 259 | 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 | 276 | * @returns The SHA1 hash of this data. |
| 277 | 277 | */ |
| 278 | 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 | 16 | |
| 17 | 17 | - (NSString *)shortTimeTextOfDate; |
| 18 | 18 | |
| 19 | +- (NSString *)shortTimeForLiveTextOfDate; | |
| 20 | + | |
| 19 | 21 | - (NSString *)timeTextOfDate; |
| 20 | 22 | |
| 21 | 23 | |
| ... | ... | @@ -23,4 +25,12 @@ |
| 23 | 25 | + (NSDate *)dateFromString:(NSString *)string; |
| 24 | 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 | 36 | @end | ... | ... |
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/NSDateExtension/NSDate+Common.m
| ... | ... | @@ -7,7 +7,6 @@ |
| 7 | 7 | // |
| 8 | 8 | |
| 9 | 9 | #import "NSDate+Common.h" |
| 10 | -//#import "CNLiveDefinesHeader.h" | |
| 11 | 10 | |
| 12 | 11 | @implementation NSDate (Common) |
| 13 | 12 | |
| ... | ... | @@ -49,9 +48,29 @@ |
| 49 | 48 | return YES; |
| 50 | 49 | } |
| 51 | 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 | 75 | - (NSString *)shortTimeTextOfDate |
| 57 | 76 | { |
| ... | ... | @@ -65,7 +84,7 @@ |
| 65 | 84 | { |
| 66 | 85 | // 今天的消息 |
| 67 | 86 | NSDateFormatter* dateFormat = [[NSDateFormatter alloc] init]; |
| 68 | - [dateFormat setDateFormat:@"aHH:mm"]; | |
| 87 | + [dateFormat setDateFormat:@"ahh:mm"]; | |
| 69 | 88 | [dateFormat setAMSymbol:@"上午"]; |
| 70 | 89 | [dateFormat setPMSymbol:@"下午"]; |
| 71 | 90 | NSString *dateString = [dateFormat stringFromDate:date]; |
| ... | ... | @@ -124,7 +143,7 @@ |
| 124 | 143 | |
| 125 | 144 | // 今天的消息 |
| 126 | 145 | NSDateFormatter* dateFormat = [[NSDateFormatter alloc] init]; |
| 127 | - [dateFormat setDateFormat:@"aHH:mm"]; | |
| 146 | + [dateFormat setDateFormat:@"ahh:mm"]; | |
| 128 | 147 | [dateFormat setAMSymbol:@"上午"]; |
| 129 | 148 | [dateFormat setPMSymbol:@"下午"]; |
| 130 | 149 | NSString *dateString = [dateFormat stringFromDate:date]; |
| ... | ... | @@ -187,7 +206,7 @@ |
| 187 | 206 | //NSDate转NSString |
| 188 | 207 | NSString *currentDateString = [dateFormatter stringFromDate:date]; |
| 189 | 208 | //输出currentDateString |
| 190 | -// NSLog(@"%@",currentDateString); | |
| 209 | + // NSLog(@"%@",currentDateString); | |
| 191 | 210 | return currentDateString; |
| 192 | 211 | } |
| 193 | 212 | |
| ... | ... | @@ -211,20 +230,60 @@ |
| 211 | 230 | return time; |
| 212 | 231 | } |
| 213 | 232 | |
| 214 | -- (NSTimeInterval)pleaseInsertStarTimeo:(NSString *)time1 andInsertEndTime:(NSString *)time2{ | |
| 233 | +- (void)pleaseInsertStarTimeo:(NSString *)time1 andInsertEndTime:(NSString *)time2{ | |
| 215 | 234 | // 1.将时间转换为date |
| 216 | 235 | NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; |
| 217 | 236 | formatter.dateFormat = @"yyyy-MM-dd HH:mm:ss"; |
| 218 | 237 | NSDate *date1 = [formatter dateFromString:time1]; |
| 219 | 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 | 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 | 289 | @end | ... | ... |
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/NSDictionaryExtension/NSDictionary+Safety.h
| ... | ... | @@ -7,16 +7,15 @@ |
| 7 | 7 | // |
| 8 | 8 | |
| 9 | 9 | #import <Foundation/Foundation.h> |
| 10 | - | |
| 10 | +//字典转json格式字符串 | |
| 11 | +#ifndef CNLiveNSDictionaryDicToJson | |
| 12 | +#define CNLiveNSDictionaryDicToJson(dic) [NSDictionary dictionaryToJson:dic] | |
| 13 | +#endif | |
| 11 | 14 | @interface NSDictionary (Safety) |
| 12 | 15 | |
| 13 | 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 | 21 | @end | ... | ... |
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/NSDictionaryExtension/NSDictionary+Safety.m
| ... | ... | @@ -44,30 +44,10 @@ |
| 44 | 44 | } |
| 45 | 45 | |
| 46 | 46 | //字典转json格式字符串: |
| 47 | -- (NSString *)dictionaryToJson | |
| 47 | ++ (NSString *)dictionaryToJson:(NSDictionary *)dic | |
| 48 | 48 | { |
| 49 | 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 | 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 | 53 | @end | ... | ... |
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/NSObjectExtension/NSObject+KVOCategory.h
| ... | ... | @@ -9,7 +9,7 @@ |
| 9 | 9 | |
| 10 | 10 | |
| 11 | 11 | |
| 12 | -#if kSupportNSObjectKVOCategory | |
| 12 | +//#if kSupportNSObjectKVOCategory | |
| 13 | 13 | #import <Foundation/Foundation.h> |
| 14 | 14 | |
| 15 | 15 | @interface NSObject (KVOCategory) |
| ... | ... | @@ -22,4 +22,4 @@ |
| 22 | 22 | - (void)cancelObservedBy:(NSObject *)observer forKeyPaths:(NSArray *)keyPaths; |
| 23 | 23 | |
| 24 | 24 | @end |
| 25 | -#endif | |
| 25 | +//#endif | ... | ... |
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/NSObjectExtension/NSObject+KVOCategory.m
| ... | ... | @@ -5,7 +5,7 @@ |
| 5 | 5 | // Created by Alexi on 5/16/14. |
| 6 | 6 | // Copyright (c) 2014 Alexi. All rights reserved. |
| 7 | 7 | // |
| 8 | -#if kSupportNSObjectKVOCategory | |
| 8 | +//#if kSupportNSObjectKVOCategory | |
| 9 | 9 | #import "NSObject+KVOCategory.h" |
| 10 | 10 | |
| 11 | 11 | @implementation NSObject (KVOCategory) |
| ... | ... | @@ -38,4 +38,4 @@ |
| 38 | 38 | } |
| 39 | 39 | |
| 40 | 40 | @end |
| 41 | -#endif | |
| 42 | 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 | // |
| 7 | 7 | |
| 8 | 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 | 45 | NS_ASSUME_NONNULL_BEGIN |
| 11 | 46 | |
| ... | ... | @@ -17,6 +52,7 @@ NS_ASSUME_NONNULL_BEGIN |
| 17 | 52 | //正则表达式验证手机号 |
| 18 | 53 | - (BOOL)isMobileNumber; |
| 19 | 54 | |
| 55 | +//读取本地JSON文件 | |
| 20 | 56 | - (id)readLocalFile; |
| 21 | 57 | |
| 22 | 58 | //获取汉字转成拼音字符串 通讯录模糊搜索 支持拼音检索 首字母 全拼 汉字 |
| ... | ... | @@ -24,6 +60,16 @@ NS_ASSUME_NONNULL_BEGIN |
| 24 | 60 | |
| 25 | 61 | //获取文件大大小 |
| 26 | 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 | 73 | @end |
| 28 | 74 | |
| 29 | 75 | NS_ASSUME_NONNULL_END | ... | ... |
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/NSStringExtension/NSString+Category.m
| ... | ... | @@ -42,6 +42,7 @@ |
| 42 | 42 | - (id)readLocalFile { |
| 43 | 43 | NSString *path = [[NSBundle mainBundle] pathForResource:self ofType:@"json"]; |
| 44 | 44 | NSData *data = [[NSData alloc] initWithContentsOfFile:path]; |
| 45 | + if (data == nil)return nil; | |
| 45 | 46 | return [NSJSONSerialization JSONObjectWithData:data options:kNilOptions error:nil]; |
| 46 | 47 | } |
| 47 | 48 | |
| ... | ... | @@ -93,4 +94,32 @@ |
| 93 | 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 | 125 | @end | ... | ... |
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/NSStringExtension/NSString+RegexCheck.m
| ... | ... | @@ -28,7 +28,7 @@ |
| 28 | 28 | { |
| 29 | 29 | NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init]; |
| 30 | 30 | [dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"]; |
| 31 | -// [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:8]]; | |
| 31 | + // [dateFormatter setTimeZone:[NSTimeZone timeZoneForSecondsFromGMT:8]]; | |
| 32 | 32 | NSTimeInterval oldTime = [[dateFormatter dateFromString:self] timeIntervalSince1970]; |
| 33 | 33 | NSTimeInterval currentTime = [[NSDate date] timeIntervalSince1970]; |
| 34 | 34 | return oldTime <= currentTime; | ... | ... |
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/NSStringExtension/NSString+Size.h
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/NSStringExtension/NSString+Size.m
| ... | ... | @@ -9,14 +9,7 @@ |
| 9 | 9 | #import "NSString+Size.h" |
| 10 | 10 | |
| 11 | 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 | 13 | - (CGSize)tt_sizeWithFont:(UIFont *)font |
| 21 | 14 | { |
| 22 | 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 | 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 | 16 | 创建UIButton,文字及其颜色,字体字号 |
| 44 | 17 | |
| 45 | 18 | @param title 文字 |
| ... | ... | @@ -48,95 +21,43 @@ |
| 48 | 21 | @return 自定义的UIButton |
| 49 | 22 | */ |
| 50 | 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 | 62 | @end |
| 63 | + | ... | ... |
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/UIButtonExtension/UIButton+createButton.m
| ... | ... | @@ -17,7 +17,19 @@ |
| 17 | 17 | #define DefaultCornerRadius 0 |
| 18 | 18 | #define DefaultBorderWidth 0 |
| 19 | 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 | 35 | @implementation UIButton (createButton) |
| ... | ... | @@ -29,41 +41,8 @@ static char leftNameKey; |
| 29 | 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 | 44 | 创建UIButton,文字及其颜色,字体字号 |
| 66 | - | |
| 45 | + | |
| 67 | 46 | @param title 文字 |
| 68 | 47 | @param titleColor 文字颜色 |
| 69 | 48 | @param labelFontSize 字体字号 |
| ... | ... | @@ -71,124 +50,12 @@ static char leftNameKey; |
| 71 | 50 | */ |
| 72 | 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 | 57 | 创建一个自定义属性的UIButton |
| 191 | - | |
| 58 | + | |
| 192 | 59 | @param title 文字 |
| 193 | 60 | @param titleColor 文字颜色 |
| 194 | 61 | @param labelFontSize 文字字号 |
| ... | ... | @@ -219,6 +86,7 @@ static char leftNameKey; |
| 219 | 86 | button.backgroundColor = backgroundColor; |
| 220 | 87 | return button; |
| 221 | 88 | } |
| 89 | +#pragma mark -设置热区 | |
| 222 | 90 | - (UIEdgeInsets)touchAreaInsets |
| 223 | 91 | { |
| 224 | 92 | return [objc_getAssociatedObject(self, @selector(touchAreaInsets)) UIEdgeInsetsValue]; |
| ... | ... | @@ -248,4 +116,129 @@ static char leftNameKey; |
| 248 | 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 | 244 | @end | ... | ... |
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/UIColorExtension/UIColor+CNLiveExtension.h
| ... | ... | @@ -7,14 +7,22 @@ |
| 7 | 7 | // |
| 8 | 8 | |
| 9 | 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 | 19 | @interface UIColor (CNLiveExtension) |
| 12 | 20 | |
| 13 | 21 | - (CGFloat)cnlive_alpha; |
| 14 | 22 | |
| 15 | 23 | //十六进制颜色 |
| 16 | -+ (UIColor *)colorWithHexString:(NSString *)color; | |
| 24 | ++ (UIColor *)cnlive_colorWithHexString:(NSString *)color; | |
| 17 | 25 | |
| 18 | 26 | //十六进制颜色,alpha |
| 19 | -+ (UIColor *) colorWithHexString:(NSString *)color andAlpha:(CGFloat )alpha; | |
| 27 | ++ (UIColor *)cnlive_colorWithHexString:(NSString *)color andAlpha:(CGFloat )alpha; | |
| 20 | 28 | @end | ... | ... |
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/UIColorExtension/UIColor+CNLiveExtension.m
| ... | ... | @@ -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 | 26 | //十六进制颜色,alpha |
| 27 | -+ (UIColor *) colorWithHexString:(NSString *)color andAlpha:(CGFloat )alpha | |
| 27 | ++ (UIColor *)cnlive_colorWithHexString:(NSString *)color andAlpha:(CGFloat )alpha | |
| 28 | 28 | { |
| 29 | 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 | 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 | 16 | NS_ASSUME_NONNULL_BEGIN |
| 12 | 17 | |
| 13 | 18 | @interface UIImage (CNLiveAdd) |
| 14 | 19 | |
| 15 | - | |
| 16 | 20 | /** |
| 17 | 21 | 重新设置size |
| 18 | - | |
| 22 | + | |
| 19 | 23 | @param size 目标size |
| 20 | 24 | @return 目标size的UIImage对象 |
| 21 | 25 | */ |
| 22 | 26 | - (UIImage *)cnlive_imageByResizeToSize:(CGSize)size; |
| 23 | 27 | |
| 24 | 28 | //颜色转背景图片 |
| 25 | -- (UIImage *)imageWithColor:(UIColor *)color; | |
| 29 | ++ (UIImage *)imageWithColor:(UIColor *)color; | |
| 26 | 30 | @end |
| 27 | 31 | |
| 28 | 32 | NS_ASSUME_NONNULL_END | ... | ... |
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/UIImageExtension/UIImage+CNLiveAdd.m
| ... | ... | @@ -20,7 +20,7 @@ |
| 20 | 20 | } |
| 21 | 21 | |
| 22 | 22 | //颜色转背景图片 |
| 23 | -- (UIImage *)imageWithColor:(UIColor *)color { | |
| 23 | ++ (UIImage *)imageWithColor:(UIColor *)color { | |
| 24 | 24 | CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f); |
| 25 | 25 | UIGraphicsBeginImageContext(rect.size); |
| 26 | 26 | CGContextRef context = UIGraphicsGetCurrentContext(); | ... | ... |
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/UIImageExtension/UIImage+ImageEffect.m
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 | 28 | // 返回新的改变大小后的图片 |
| 29 | 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 | 48 | @end | ... | ... |
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/UIImageExtension/UIImage+zipData.m
| ... | ... | @@ -249,15 +249,15 @@ |
| 249 | 249 | NSNumber * limitLength = [NSNumber numberWithInteger:19*1024*1024]; |
| 250 | 250 | CGFloat scale = [limitLength floatValue]/ [dataLength floatValue]; |
| 251 | 251 | scale = scale > 0.3 ? 0.3 : scale; |
| 252 | - data = UIImageJPEGRepresentation(sourceImage, scale); | |
| 252 | + data = UIImageJPEGRepresentation(newImage, scale); | |
| 253 | 253 | }else if (data.length > 10*1024*1024){//10M<x<=19M |
| 254 | - data = UIImageJPEGRepresentation(sourceImage, 0.3); | |
| 254 | + data = UIImageJPEGRepresentation(newImage, 0.3); | |
| 255 | 255 | }else if (data.length > 1*1024*1024){//1M<x<=10M |
| 256 | - data = UIImageJPEGRepresentation(sourceImage, 0.7); | |
| 256 | + data = UIImageJPEGRepresentation(newImage, 0.7); | |
| 257 | 257 | }else if (data.length > 512*1024) {//0.5M<x<1M |
| 258 | - data = UIImageJPEGRepresentation(sourceImage, 0.8); | |
| 258 | + data = UIImageJPEGRepresentation(newImage, 0.8); | |
| 259 | 259 | }else if (data.length > 102*1024) {//0.1M-0.5M |
| 260 | - data = UIImageJPEGRepresentation(sourceImage, 0.9); | |
| 260 | + data = UIImageJPEGRepresentation(newImage, 0.9); | |
| 261 | 261 | }else{ |
| 262 | 262 | //不压缩 |
| 263 | 263 | } |
| ... | ... | @@ -316,15 +316,15 @@ |
| 316 | 316 | NSNumber * limitLength = [NSNumber numberWithInteger:19*1024*1024]; |
| 317 | 317 | CGFloat scale = [limitLength floatValue]/ [dataLength floatValue]; |
| 318 | 318 | scale = scale > 0.3 ? 0.3 : scale; |
| 319 | - data = UIImageJPEGRepresentation(sourceImage, scale); | |
| 319 | + data = UIImageJPEGRepresentation(newImage, scale); | |
| 320 | 320 | }else if (data.length > 10*1024*1024){//10M<x<=19M |
| 321 | - data = UIImageJPEGRepresentation(sourceImage, 0.3); | |
| 321 | + data = UIImageJPEGRepresentation(newImage, 0.3); | |
| 322 | 322 | }else if (data.length > 1*1024*1024){//1M<x<=10M |
| 323 | - data = UIImageJPEGRepresentation(sourceImage, 0.7); | |
| 323 | + data = UIImageJPEGRepresentation(newImage, 0.7); | |
| 324 | 324 | }else if (data.length > 512*1024) {//0.5M<x<1M |
| 325 | - data = UIImageJPEGRepresentation(sourceImage, 0.8); | |
| 325 | + data = UIImageJPEGRepresentation(newImage, 0.8); | |
| 326 | 326 | }else if (data.length > 102*1024) {//0.1M-0.5M |
| 327 | - data = UIImageJPEGRepresentation(sourceImage, 0.9); | |
| 327 | + data = UIImageJPEGRepresentation(newImage, 0.9); | |
| 328 | 328 | }else{ |
| 329 | 329 | //不压缩 |
| 330 | 330 | } | ... | ... |
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/UIImageViewExtension/UIImageView+ZXExtension.m
| ... | ... | @@ -10,7 +10,7 @@ |
| 10 | 10 | #import "UIImageView+WebCache.h" |
| 11 | 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 | 15 | * weakSelf |
| 16 | 16 | */ |
| ... | ... | @@ -32,13 +32,13 @@ |
| 32 | 32 | |
| 33 | 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 | 38 | - (void)zx_setCircleHeader:(NSString *)url |
| 39 | 39 | { |
| 40 | 40 | weakself |
| 41 | - UIImage *placeholder = [kDefaultUserCircleIcon zx_circleImage]; | |
| 41 | + UIImage *placeholder = [kCNLiveDefaultUserCircleIcon zx_circleImage]; | |
| 42 | 42 | [self sd_setImageWithURL:[NSURL URLWithString:url] placeholderImage:placeholder completed: |
| 43 | 43 | ^(UIImage *image, NSError *error, SDImageCacheType cacheType, NSURL *imageURL) { |
| 44 | 44 | // 如果图片下载失败,就不做任何处理,按照默认的做法:会显示占位图片 |
| ... | ... | @@ -133,8 +133,8 @@ |
| 133 | 133 | CGContextRef context = NULL; |
| 134 | 134 | CGColorSpaceRef colorSpace; |
| 135 | 135 | void * bitmapData; |
| 136 | - long bitmapByteCount; | |
| 137 | - long bitmapBytesPerRow; | |
| 136 | + int bitmapByteCount; | |
| 137 | + int bitmapBytesPerRow; | |
| 138 | 138 | |
| 139 | 139 | // Get image width, height. We'll use the entire image. |
| 140 | 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
Example/Pods/CNLiveCommonCategory/CNLiveCommonCategory/Classes/ARC/UIViewExtension/UIView+Effect.m
| ... | ... | @@ -30,14 +30,4 @@ |
| 30 | 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 | 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 | 33 | #import "NSDate+Common.h" |
| 34 | 34 | #import "UIView+Glow.h" |
| 35 | 35 | #import "UIView+Effect.h" |
| 36 | -#import "UIView+Layout.h" | |
| 37 | -#import "UIView+ModifyFrame.h" | |
| 36 | +#import "UIView+IMLayout.h" | |
| 38 | 37 | #import "UIView+CaptureImage.h" |
| 39 | -#import "UIView+CNGradienLayer.h" | |
| 40 | 38 | #import "UIView+RelativeCoordinate.h" |
| 41 | 39 | #import "UIView+CustomAutoLayout.h" |
| 42 | 40 | #import "UITableView+Hit.h" |
| 43 | -#import "UIButton+CNCountDownButton.h" | |
| 44 | 41 | #import "UIButton+createButton.h" |
| 45 | 42 | #import "UITextField+ZXExtension.h" |
| 46 | 43 | #import "UIViewController+ChildViewController.h" | ... | ... |
Example/Pods/Local Podspecs/CNLiveDisease.podspec.json
| 1 | 1 | { |
| 2 | 2 | "name": "CNLiveDisease", |
| 3 | - "version": "0.0.7", | |
| 3 | + "version": "0.1.0", | |
| 4 | 4 | "summary": "智慧农业部分组件化", |
| 5 | 5 | "description": "TODO: Add long description of the pod here.", |
| 6 | 6 | "homepage": "http://bj.gitlab.cnlive.com/ios-team/CNLiveDisease", |
| ... | ... | @@ -13,46 +13,71 @@ |
| 13 | 13 | }, |
| 14 | 14 | "source": { |
| 15 | 15 | "git": "http://bj.gitlab.cnlive.com/ios-team/CNLiveDisease.git", |
| 16 | - "tag": "0.0.7" | |
| 16 | + "tag": "0.1.0" | |
| 17 | 17 | }, |
| 18 | 18 | "platforms": { |
| 19 | 19 | "ios": "9.0" |
| 20 | 20 | }, |
| 21 | - "source_files": "CNLiveDisease/Classes/**/*", | |
| 22 | 21 | "resource_bundles": { |
| 23 | 22 | "CNLiveDisease": [ |
| 24 | 23 | "CNLiveDisease/Assets/Assets.xcassets" |
| 25 | 24 | ] |
| 26 | 25 | }, |
| 27 | - "public_header_files": "Pod/Classes/**/*.h", | |
| 28 | 26 | "frameworks": [ |
| 29 | 27 | "UIKit", |
| 30 | 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 | 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 | 21 | - Masonry (~> 1.0.2) |
| 22 | + - QMUIKit (~> 3.1.7) | |
| 4 | 23 | - CNLiveBaseKit (0.1.8): |
| 5 | 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 | 42 | - CNLiveAVCamera |
| 11 | 43 | - CNLiveBaseKit |
| 12 | 44 | - CNLiveCommonCategory |
| 13 | - - CNLiveCoreMediator | |
| 45 | + - CNLiveCommonClass | |
| 46 | + - CNLiveCoreMediator_ModuleDiseaseAction | |
| 47 | + - CNLiveDisease/View | |
| 14 | 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 | 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 | 68 | - FLAnimatedImage (1.0.12) |
| 20 | 69 | - Masonry (1.0.2) |
| 21 | 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 | 135 | - QMUIKit/QMUIComponents/QMUINavigationTitleView |
| 87 | 136 | - QMUIKit/QMUICore |
| 88 | 137 | - QMUIKit/QMUIMainFrame |
| 89 | - - QMUIKit/QMUIComponents/QMUIAlertController (3.1.0): | |
| 138 | + - QMUIKit/QMUIComponents/QMUIAlertController (3.1.9): | |
| 90 | 139 | - QMUIKit/QMUIComponents/QMUIButton |
| 91 | 140 | - QMUIKit/QMUIComponents/QMUIModalPresentationViewController |
| 92 | 141 | - QMUIKit/QMUIComponents/QMUITextField |
| 93 | 142 | - QMUIKit/QMUICore |
| 94 | - - QMUIKit/QMUIComponents/QMUIAssetLibrary (3.1.0): | |
| 143 | + - QMUIKit/QMUIComponents/QMUIAssetLibrary (3.1.9): | |
| 95 | 144 | - QMUIKit/QMUICore |
| 96 | - - QMUIKit/QMUIComponents/QMUIBadge (3.1.0): | |
| 145 | + - QMUIKit/QMUIComponents/QMUIBadge (3.1.9): | |
| 97 | 146 | - QMUIKit/QMUIComponents/QMUILabel |
| 98 | 147 | - QMUIKit/QMUICore |
| 99 | - - QMUIKit/QMUIComponents/QMUIButton (3.1.0): | |
| 148 | + - QMUIKit/QMUIComponents/QMUIButton (3.1.9): | |
| 100 | 149 | - QMUIKit/QMUICore |
| 101 | - - QMUIKit/QMUIComponents/QMUICAAnimationExtension (3.1.0): | |
| 150 | + - QMUIKit/QMUIComponents/QMUICAAnimationExtension (3.1.9): | |
| 102 | 151 | - QMUIKit/QMUIComponents/QMUIMultipleDelegates |
| 103 | 152 | - QMUIKit/QMUICore |
| 104 | - - QMUIKit/QMUIComponents/QMUICellHeightCache (3.1.0): | |
| 153 | + - QMUIKit/QMUIComponents/QMUICellHeightCache (3.1.9): | |
| 105 | 154 | - QMUIKit/QMUIComponents/QMUITableViewProtocols |
| 106 | 155 | - QMUIKit/QMUICore |
| 107 | - - QMUIKit/QMUIComponents/QMUICellHeightKeyCache (3.1.0): | |
| 156 | + - QMUIKit/QMUIComponents/QMUICellHeightKeyCache (3.1.9): | |
| 108 | 157 | - QMUIKit/QMUIComponents/QMUIMultipleDelegates |
| 109 | 158 | - QMUIKit/QMUIComponents/QMUITableViewProtocols |
| 110 | 159 | - QMUIKit/QMUICore |
| 111 | - - QMUIKit/QMUIComponents/QMUICellSizeKeyCache (3.1.0): | |
| 160 | + - QMUIKit/QMUIComponents/QMUICellSizeKeyCache (3.1.9): | |
| 112 | 161 | - QMUIKit/QMUIComponents/QMUIMultipleDelegates |
| 113 | 162 | - QMUIKit/QMUICore |
| 114 | - - QMUIKit/QMUIComponents/QMUICollectionViewPagingLayout (3.1.0): | |
| 163 | + - QMUIKit/QMUIComponents/QMUICollectionViewPagingLayout (3.1.9): | |
| 115 | 164 | - QMUIKit/QMUICore |
| 116 | - - QMUIKit/QMUIComponents/QMUIConsole (3.1.0): | |
| 165 | + - QMUIKit/QMUIComponents/QMUIConsole (3.1.9): | |
| 117 | 166 | - QMUIKit/QMUIComponents/QMUIButton |
| 118 | 167 | - QMUIKit/QMUIComponents/QMUICAAnimationExtension |
| 119 | 168 | - QMUIKit/QMUIComponents/QMUIPopupMenuView |
| 120 | 169 | - QMUIKit/QMUIComponents/QMUITextField |
| 121 | 170 | - QMUIKit/QMUIComponents/QMUITextView |
| 122 | 171 | - QMUIKit/QMUICore |
| 123 | - - QMUIKit/QMUIComponents/QMUIDialogViewController (3.1.0): | |
| 172 | + - QMUIKit/QMUIComponents/QMUIDialogViewController (3.1.9): | |
| 124 | 173 | - QMUIKit/QMUIComponents/QMUIButton |
| 125 | 174 | - QMUIKit/QMUIComponents/QMUILabel |
| 126 | 175 | - QMUIKit/QMUIComponents/QMUIModalPresentationViewController |
| ... | ... | @@ -130,27 +179,27 @@ PODS: |
| 130 | 179 | - QMUIKit/QMUIComponents/QMUITextField |
| 131 | 180 | - QMUIKit/QMUICore |
| 132 | 181 | - QMUIKit/QMUIMainFrame |
| 133 | - - QMUIKit/QMUIComponents/QMUIEmotionInputManager (3.1.0): | |
| 182 | + - QMUIKit/QMUIComponents/QMUIEmotionInputManager (3.1.9): | |
| 134 | 183 | - QMUIKit/QMUIComponents/QMUIEmotionView |
| 135 | 184 | - QMUIKit/QMUICore |
| 136 | - - QMUIKit/QMUIComponents/QMUIEmotionView (3.1.0): | |
| 185 | + - QMUIKit/QMUIComponents/QMUIEmotionView (3.1.9): | |
| 137 | 186 | - QMUIKit/QMUIComponents/QMUIButton |
| 138 | 187 | - QMUIKit/QMUICore |
| 139 | 188 | - QMUIKit/QMUIResources |
| 140 | - - QMUIKit/QMUIComponents/QMUIEmptyView (3.1.0): | |
| 189 | + - QMUIKit/QMUIComponents/QMUIEmptyView (3.1.9): | |
| 141 | 190 | - QMUIKit/QMUIComponents/QMUIButton |
| 142 | 191 | - QMUIKit/QMUICore |
| 143 | - - QMUIKit/QMUIComponents/QMUIFillButton (3.1.0): | |
| 192 | + - QMUIKit/QMUIComponents/QMUIFillButton (3.1.9): | |
| 144 | 193 | - QMUIKit/QMUIComponents/QMUIButton |
| 145 | 194 | - QMUIKit/QMUICore |
| 146 | - - QMUIKit/QMUIComponents/QMUIFloatLayoutView (3.1.0): | |
| 195 | + - QMUIKit/QMUIComponents/QMUIFloatLayoutView (3.1.9): | |
| 147 | 196 | - QMUIKit/QMUICore |
| 148 | - - QMUIKit/QMUIComponents/QMUIGhostButton (3.1.0): | |
| 197 | + - QMUIKit/QMUIComponents/QMUIGhostButton (3.1.9): | |
| 149 | 198 | - QMUIKit/QMUIComponents/QMUIButton |
| 150 | 199 | - QMUIKit/QMUICore |
| 151 | - - QMUIKit/QMUIComponents/QMUIGridView (3.1.0): | |
| 200 | + - QMUIKit/QMUIComponents/QMUIGridView (3.1.9): | |
| 152 | 201 | - QMUIKit/QMUICore |
| 153 | - - QMUIKit/QMUIComponents/QMUIImagePickerLibrary (3.1.0): | |
| 202 | + - QMUIKit/QMUIComponents/QMUIImagePickerLibrary (3.1.9): | |
| 154 | 203 | - QMUIKit/QMUIComponents/QMUIAlertController |
| 155 | 204 | - QMUIKit/QMUIComponents/QMUIAssetLibrary |
| 156 | 205 | - QMUIKit/QMUIComponents/QMUIButton |
| ... | ... | @@ -162,7 +211,7 @@ PODS: |
| 162 | 211 | - QMUIKit/QMUICore |
| 163 | 212 | - QMUIKit/QMUIMainFrame |
| 164 | 213 | - QMUIKit/QMUIResources |
| 165 | - - QMUIKit/QMUIComponents/QMUIImagePreviewView (3.1.0): | |
| 214 | + - QMUIKit/QMUIComponents/QMUIImagePreviewView (3.1.9): | |
| 166 | 215 | - QMUIKit/QMUIComponents/QMUIButton |
| 167 | 216 | - QMUIKit/QMUIComponents/QMUICollectionViewPagingLayout |
| 168 | 217 | - QMUIKit/QMUIComponents/QMUIEmptyView |
| ... | ... | @@ -170,111 +219,111 @@ PODS: |
| 170 | 219 | - QMUIKit/QMUIComponents/QMUIZoomImageView |
| 171 | 220 | - QMUIKit/QMUICore |
| 172 | 221 | - QMUIKit/QMUIMainFrame |
| 173 | - - QMUIKit/QMUIComponents/QMUIKeyboardManager (3.1.0): | |
| 222 | + - QMUIKit/QMUIComponents/QMUIKeyboardManager (3.1.9): | |
| 174 | 223 | - QMUIKit/QMUICore |
| 175 | - - QMUIKit/QMUIComponents/QMUILabel (3.1.0): | |
| 224 | + - QMUIKit/QMUIComponents/QMUILabel (3.1.9): | |
| 176 | 225 | - QMUIKit/QMUICore |
| 177 | - - QMUIKit/QMUIComponents/QMUILinkButton (3.1.0): | |
| 226 | + - QMUIKit/QMUIComponents/QMUILinkButton (3.1.9): | |
| 178 | 227 | - QMUIKit/QMUIComponents/QMUIButton |
| 179 | 228 | - QMUIKit/QMUICore |
| 180 | - - QMUIKit/QMUIComponents/QMUILogManagerViewController (3.1.0): | |
| 229 | + - QMUIKit/QMUIComponents/QMUILogManagerViewController (3.1.9): | |
| 181 | 230 | - QMUIKit/QMUIComponents/QMUIPopupMenuView |
| 182 | 231 | - QMUIKit/QMUIComponents/QMUISearchController |
| 183 | 232 | - QMUIKit/QMUIComponents/QMUIStaticTableView |
| 184 | 233 | - QMUIKit/QMUIComponents/QMUITableView |
| 185 | 234 | - QMUIKit/QMUICore |
| 186 | 235 | - QMUIKit/QMUIMainFrame |
| 187 | - - QMUIKit/QMUIComponents/QMUILogWithConfigurationSupported (3.1.0): | |
| 236 | + - QMUIKit/QMUIComponents/QMUILogWithConfigurationSupported (3.1.9): | |
| 188 | 237 | - QMUIKit/QMUICore |
| 189 | - - QMUIKit/QMUIComponents/QMUIMarqueeLabel (3.1.0): | |
| 238 | + - QMUIKit/QMUIComponents/QMUIMarqueeLabel (3.1.9): | |
| 190 | 239 | - QMUIKit/QMUICore |
| 191 | - - QMUIKit/QMUIComponents/QMUIModalPresentationViewController (3.1.0): | |
| 240 | + - QMUIKit/QMUIComponents/QMUIModalPresentationViewController (3.1.9): | |
| 192 | 241 | - QMUIKit/QMUIComponents/QMUIKeyboardManager |
| 193 | 242 | - QMUIKit/QMUICore |
| 194 | - - QMUIKit/QMUIComponents/QMUIMoreOperationController (3.1.0): | |
| 243 | + - QMUIKit/QMUIComponents/QMUIMoreOperationController (3.1.9): | |
| 195 | 244 | - QMUIKit/QMUIComponents/QMUIButton |
| 196 | 245 | - QMUIKit/QMUIComponents/QMUIModalPresentationViewController |
| 197 | 246 | - QMUIKit/QMUICore |
| 198 | - - QMUIKit/QMUIComponents/QMUIMultipleDelegates (3.1.0): | |
| 247 | + - QMUIKit/QMUIComponents/QMUIMultipleDelegates (3.1.9): | |
| 199 | 248 | - QMUIKit/QMUICore |
| 200 | - - QMUIKit/QMUIComponents/QMUINavigationButton (3.1.0): | |
| 249 | + - QMUIKit/QMUIComponents/QMUINavigationButton (3.1.9): | |
| 201 | 250 | - QMUIKit/QMUICore |
| 202 | 251 | - QMUIKit/QMUIMainFrame |
| 203 | - - QMUIKit/QMUIComponents/QMUINavigationTitleView (3.1.0): | |
| 252 | + - QMUIKit/QMUIComponents/QMUINavigationTitleView (3.1.9): | |
| 204 | 253 | - QMUIKit/QMUIComponents/QMUIButton |
| 205 | 254 | - QMUIKit/QMUICore |
| 206 | - - QMUIKit/QMUIComponents/QMUIOrderedDictionary (3.1.0): | |
| 255 | + - QMUIKit/QMUIComponents/QMUIOrderedDictionary (3.1.9): | |
| 207 | 256 | - QMUIKit/QMUICore |
| 208 | - - QMUIKit/QMUIComponents/QMUIPieProgressView (3.1.0): | |
| 257 | + - QMUIKit/QMUIComponents/QMUIPieProgressView (3.1.9): | |
| 209 | 258 | - QMUIKit/QMUICore |
| 210 | - - QMUIKit/QMUIComponents/QMUIPopupContainerView (3.1.0): | |
| 259 | + - QMUIKit/QMUIComponents/QMUIPopupContainerView (3.1.9): | |
| 211 | 260 | - QMUIKit/QMUICore |
| 212 | 261 | - QMUIKit/QMUIMainFrame |
| 213 | - - QMUIKit/QMUIComponents/QMUIPopupMenuView (3.1.0): | |
| 262 | + - QMUIKit/QMUIComponents/QMUIPopupMenuView (3.1.9): | |
| 214 | 263 | - QMUIKit/QMUIComponents/QMUIButton |
| 215 | 264 | - QMUIKit/QMUIComponents/QMUIPopupContainerView |
| 216 | 265 | - QMUIKit/QMUICore |
| 217 | - - QMUIKit/QMUIComponents/QMUIScrollAnimator (3.1.0): | |
| 266 | + - QMUIKit/QMUIComponents/QMUIScrollAnimator (3.1.9): | |
| 218 | 267 | - QMUIKit/QMUIComponents/QMUIMultipleDelegates |
| 219 | 268 | - QMUIKit/QMUICore |
| 220 | - - QMUIKit/QMUIComponents/QMUISearchBar (3.1.0): | |
| 269 | + - QMUIKit/QMUIComponents/QMUISearchBar (3.1.9): | |
| 221 | 270 | - QMUIKit/QMUICore |
| 222 | - - QMUIKit/QMUIComponents/QMUISearchController (3.1.0): | |
| 271 | + - QMUIKit/QMUIComponents/QMUISearchController (3.1.9): | |
| 223 | 272 | - QMUIKit/QMUIComponents/QMUIEmptyView |
| 224 | 273 | - QMUIKit/QMUIComponents/QMUISearchBar |
| 225 | 274 | - QMUIKit/QMUICore |
| 226 | 275 | - QMUIKit/QMUIMainFrame |
| 227 | - - QMUIKit/QMUIComponents/QMUISegmentedControl (3.1.0): | |
| 276 | + - QMUIKit/QMUIComponents/QMUISegmentedControl (3.1.9): | |
| 228 | 277 | - QMUIKit/QMUICore |
| 229 | - - QMUIKit/QMUIComponents/QMUISlider (3.1.0): | |
| 278 | + - QMUIKit/QMUIComponents/QMUISlider (3.1.9): | |
| 230 | 279 | - QMUIKit/QMUICore |
| 231 | - - QMUIKit/QMUIComponents/QMUIStaticTableView (3.1.0): | |
| 280 | + - QMUIKit/QMUIComponents/QMUIStaticTableView (3.1.9): | |
| 232 | 281 | - QMUIKit/QMUIComponents/QMUIMultipleDelegates |
| 233 | 282 | - QMUIKit/QMUIComponents/QMUITableViewCell |
| 234 | 283 | - QMUIKit/QMUICore |
| 235 | - - QMUIKit/QMUIComponents/QMUITableView (3.1.0): | |
| 284 | + - QMUIKit/QMUIComponents/QMUITableView (3.1.9): | |
| 236 | 285 | - QMUIKit/QMUIComponents/QMUITableViewProtocols |
| 237 | 286 | - QMUIKit/QMUICore |
| 238 | - - QMUIKit/QMUIComponents/QMUITableViewCell (3.1.0): | |
| 287 | + - QMUIKit/QMUIComponents/QMUITableViewCell (3.1.9): | |
| 239 | 288 | - QMUIKit/QMUIComponents/QMUIButton |
| 240 | 289 | - QMUIKit/QMUICore |
| 241 | - - QMUIKit/QMUIComponents/QMUITableViewHeaderFooterView (3.1.0): | |
| 290 | + - QMUIKit/QMUIComponents/QMUITableViewHeaderFooterView (3.1.9): | |
| 242 | 291 | - QMUIKit/QMUICore |
| 243 | - - QMUIKit/QMUIComponents/QMUITableViewProtocols (3.1.0): | |
| 292 | + - QMUIKit/QMUIComponents/QMUITableViewProtocols (3.1.9): | |
| 244 | 293 | - QMUIKit/QMUICore |
| 245 | - - QMUIKit/QMUIComponents/QMUITestView (3.1.0): | |
| 294 | + - QMUIKit/QMUIComponents/QMUITestView (3.1.9): | |
| 246 | 295 | - QMUIKit/QMUICore |
| 247 | - - QMUIKit/QMUIComponents/QMUITextField (3.1.0): | |
| 296 | + - QMUIKit/QMUIComponents/QMUITextField (3.1.9): | |
| 248 | 297 | - QMUIKit/QMUIComponents/QMUIMultipleDelegates |
| 249 | 298 | - QMUIKit/QMUICore |
| 250 | - - QMUIKit/QMUIComponents/QMUITextView (3.1.0): | |
| 299 | + - QMUIKit/QMUIComponents/QMUITextView (3.1.9): | |
| 251 | 300 | - QMUIKit/QMUIComponents/QMUILabel |
| 252 | 301 | - QMUIKit/QMUIComponents/QMUIMultipleDelegates |
| 253 | 302 | - QMUIKit/QMUICore |
| 254 | - - QMUIKit/QMUIComponents/QMUITips (3.1.0): | |
| 303 | + - QMUIKit/QMUIComponents/QMUITips (3.1.9): | |
| 255 | 304 | - QMUIKit/QMUIComponents/QMUIToastView |
| 256 | 305 | - QMUIKit/QMUICore |
| 257 | 306 | - QMUIKit/QMUIResources |
| 258 | - - QMUIKit/QMUIComponents/QMUIToastView (3.1.0): | |
| 307 | + - QMUIKit/QMUIComponents/QMUIToastView (3.1.9): | |
| 259 | 308 | - QMUIKit/QMUIComponents/QMUIKeyboardManager |
| 260 | 309 | - QMUIKit/QMUIComponents/QMUIVisualEffectView |
| 261 | 310 | - QMUIKit/QMUICore |
| 262 | - - QMUIKit/QMUIComponents/QMUIToolbarButton (3.1.0): | |
| 311 | + - QMUIKit/QMUIComponents/QMUIToolbarButton (3.1.9): | |
| 263 | 312 | - QMUIKit/QMUICore |
| 264 | - - QMUIKit/QMUIComponents/QMUIVisualEffectView (3.1.0): | |
| 313 | + - QMUIKit/QMUIComponents/QMUIVisualEffectView (3.1.9): | |
| 265 | 314 | - QMUIKit/QMUICore |
| 266 | - - QMUIKit/QMUIComponents/QMUIZoomImageView (3.1.0): | |
| 315 | + - QMUIKit/QMUIComponents/QMUIZoomImageView (3.1.9): | |
| 267 | 316 | - QMUIKit/QMUIComponents/QMUIAssetLibrary |
| 268 | 317 | - QMUIKit/QMUIComponents/QMUIButton |
| 269 | 318 | - QMUIKit/QMUIComponents/QMUIEmptyView |
| 270 | 319 | - QMUIKit/QMUIComponents/QMUIPieProgressView |
| 271 | 320 | - QMUIKit/QMUIComponents/QMUISlider |
| 272 | 321 | - QMUIKit/QMUICore |
| 273 | - - QMUIKit/QMUICore (3.1.0): | |
| 322 | + - QMUIKit/QMUICore (3.1.9): | |
| 274 | 323 | - QMUIKit/QMUILog |
| 275 | 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 | 327 | - QMUIKit/QMUIComponents/QMUIEmptyView |
| 279 | 328 | - QMUIKit/QMUIComponents/QMUIKeyboardManager |
| 280 | 329 | - QMUIKit/QMUIComponents/QMUIMultipleDelegates |
| ... | ... | @@ -283,31 +332,42 @@ PODS: |
| 283 | 332 | - QMUIKit/QMUIComponents/QMUITableViewHeaderFooterView |
| 284 | 333 | - QMUIKit/QMUICore |
| 285 | 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 | 341 | DEPENDENCIES: |
| 293 | 342 | - CNLiveAVCamera |
| 294 | 343 | - CNLiveBaseKit |
| 295 | 344 | - CNLiveCommonCategory |
| 345 | + - CNLiveCommonClass | |
| 296 | 346 | - CNLiveCoreMediator |
| 347 | + - CNLiveCoreMediator_ModuleDiseaseAction | |
| 297 | 348 | - CNLiveDisease (from `../`) |
| 298 | 349 | - CNLiveImagePickerController |
| 350 | + - CNLiveRequestBastKit | |
| 351 | + - CNLiveTripartiteManagement/Masonry | |
| 352 | + - CNLiveTripartiteManagement/QMUIKit | |
| 299 | 353 | - FLAnimatedImage |
| 300 | - - Masonry | |
| 301 | - - QMUIKit (~> 3.1.0) | |
| 302 | 354 | |
| 303 | 355 | SPEC REPOS: |
| 304 | 356 | http://bj.gitlab.cnlive.com/ios-team/CNLiveRepos.git: |
| 305 | 357 | - CNLiveAVCamera |
| 306 | 358 | - CNLiveBaseKit |
| 359 | + - CNLiveBusinessTools | |
| 307 | 360 | - CNLiveCommonCategory |
| 361 | + - CNLiveCommonClass | |
| 308 | 362 | - CNLiveCoreMediator |
| 363 | + - CNLiveCoreMediator_ModuleDiseaseAction | |
| 364 | + - CNLiveEnvironmentConfiguration | |
| 309 | 365 | - CNLiveImagePickerController |
| 366 | + - CNLiveRequestBastKit | |
| 367 | + - CNLiveTripartiteManagement | |
| 368 | + - CNLiveUserManagement | |
| 310 | 369 | https://github.com/cocoapods/specs.git: |
| 370 | + - AFNetworking | |
| 311 | 371 | - FLAnimatedImage |
| 312 | 372 | - Masonry |
| 313 | 373 | - MJExtension |
| ... | ... | @@ -319,18 +379,26 @@ EXTERNAL SOURCES: |
| 319 | 379 | :path: "../" |
| 320 | 380 | |
| 321 | 381 | SPEC CHECKSUMS: |
| 322 | - CNLiveAVCamera: 7f3eba8eb1827f6e7a5047b0bb9f9f0bf19d1451 | |
| 382 | + AFNetworking: b6f891fdfaed196b46c7a83cf209e09697b94057 | |
| 383 | + CNLiveAVCamera: bad4d78fa537222e3e0fcc31b19e4930de634104 | |
| 323 | 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 | 392 | CNLiveImagePickerController: 2be3ac0a75563f5945101ee6e0a787ad2fc15549 |
| 393 | + CNLiveRequestBastKit: 4922b3ef5db96e61e56cabf951db72f5b25ed748 | |
| 394 | + CNLiveTripartiteManagement: 5fdbdfb7472654e93e3b7dae90cc2b8c679811f8 | |
| 395 | + CNLiveUserManagement: b0f28a8506d664af5df59af979c61cea9e5ce0e2 | |
| 328 | 396 | FLAnimatedImage: 4a0b56255d9b05f18b6dd7ee06871be5d3b89e31 |
| 329 | 397 | Masonry: 7c429b56da9d4ee0bbb3ed77a5ea710d6a5df39e |
| 330 | 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 | 404 | COCOAPODS: 1.5.3 | ... | ... |