Commit b2a0b938f6d610d7a9ffc5062137ce73a51d72f2

Authored by 梁星国
1 parent 5abd0c15

提交

CNLiveImagePickerController.podspec
@@ -8,8 +8,8 @@ @@ -8,8 +8,8 @@
8 8
9 Pod::Spec.new do |s| 9 Pod::Spec.new do |s|
10 s.name = 'CNLiveImagePickerController' 10 s.name = 'CNLiveImagePickerController'
11 - s.version = '0.1.0'  
12 - s.summary = 'A short description of CNLiveImagePickerController.' 11 + s.version = '0.1.1'
  12 + s.summary = '相册'
13 13
14 # This description is used to generate tags and improve search results. 14 # This description is used to generate tags and improve search results.
15 # * Think: What does it do? Why did you write it? What is the focus? 15 # * Think: What does it do? Why did you write it? What is the focus?
@@ -21,16 +21,19 @@ Pod::Spec.new do |s| @@ -21,16 +21,19 @@ Pod::Spec.new do |s|
21 TODO: Add long description of the pod here. 21 TODO: Add long description of the pod here.
22 DESC 22 DESC
23 23
24 - s.homepage = 'https://github.com/jyyjkt/CNLiveImagePickerController' 24 + s.homepage = 'http://bj.gitlab.cnlive.com/ios-team/CNLiveImagePickerController'
25 # s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2' 25 # s.screenshots = 'www.example.com/screenshots_1', 'www.example.com/screenshots_2'
26 s.license = { :type => 'MIT', :file => 'LICENSE' } 26 s.license = { :type => 'MIT', :file => 'LICENSE' }
27 - s.author = { 'jyyjkt' => 'jyyjkt@qq.com' }  
28 - s.source = { :git => 'https://github.com/jyyjkt/CNLiveImagePickerController.git', :tag => s.version.to_s } 27 + s.author = { 'lianxingguo' => 'jyyjkt@qq.com' }
  28 + s.source = { :git => 'http://bj.gitlab.cnlive.com/ios-team/CNLiveImagePickerController.git', :tag => s.version.to_s }
29 # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>' 29 # s.social_media_url = 'https://twitter.com/<TWITTER_USERNAME>'
30 30
31 s.ios.deployment_target = '8.0' 31 s.ios.deployment_target = '8.0'
32 32
33 - s.source_files = 'CNLiveImagePickerController/Classes/**/*' 33 + s.requires_arc = true
  34 + s.resources = "CNLiveImagePickerController/Classes/*.{png,bundle}"
  35 + s.source_files = "CNLiveImagePickerController/Classes/*.{h,m}"
  36 + s.frameworks = "Photos", "CoreServices"
34 37
35 # s.resource_bundles = { 38 # s.resource_bundles = {
36 # 'CNLiveImagePickerController' => ['CNLiveImagePickerController/Assets/*.png'] 39 # 'CNLiveImagePickerController' => ['CNLiveImagePickerController/Assets/*.png']
@@ -38,5 +41,9 @@ TODO: Add long description of the pod here. @@ -38,5 +41,9 @@ TODO: Add long description of the pod here.
38 41
39 # s.public_header_files = 'Pod/Classes/**/*.h' 42 # s.public_header_files = 'Pod/Classes/**/*.h'
40 # s.frameworks = 'UIKit', 'MapKit' 43 # s.frameworks = 'UIKit', 'MapKit'
41 - # s.dependency 'AFNetworking', '~> 2.3' 44 + s.dependency 'CNLiveBaseKit'
  45 +# s.dependency 'CNLiveUploadManager'
  46 +
  47 +
  48 +
42 end 49 end
CNLiveImagePickerController/Classes/.gitkeep deleted 100644 → 0
CNLiveImagePickerController/Classes/CNEditVideoController.m
@@ -120,58 +120,59 @@ @@ -120,58 +120,59 @@
120 CGPoint point = [pan locationInView:self]; 120 CGPoint point = [pan locationInView:self];
121 121
122 CGRect rct = self.validRect; 122 CGRect rct = self.validRect;
123 -  
124 - const CGFloat W = self.width;  
125 - CGFloat minX = 0;  
126 - CGFloat maxX = W;  
127 -  
128 - switch (pan.view.tag) {  
129 - case 0: {  
130 - //left视图响应  
131 - maxX = rct.origin.x + rct.size.width - kItemWidth;  
132 -  
133 - point.x = MAX(minX, MIN(point.x, maxX));  
134 - point.y = 0;  
135 -  
136 - rct.size.width -= (point.x - rct.origin.x);  
137 - rct.origin.x = point.x;  
138 - }  
139 - break;  
140 -  
141 - case 1:  
142 - {  
143 - //right视图响应  
144 - minX = rct.origin.x + kItemWidth/2;  
145 - maxX = W - kItemWidth/2;  
146 -  
147 - point.x = MAX(minX, MIN(point.x, maxX));  
148 - point.y = 0;  
149 -  
150 - rct.size.width = (point.x - rct.origin.x + kItemWidth/2);  
151 - }  
152 - break;  
153 - }  
154 -  
155 - switch (pan.state) {  
156 - case UIGestureRecognizerStateBegan:  
157 - case UIGestureRecognizerStateChanged:  
158 - if (self.delegate && [self.delegate respondsToSelector:@selector(editViewValidRectChanged)]) {  
159 - [self.delegate editViewValidRectChanged];//滑动响应实现  
160 - }  
161 - break;  
162 -  
163 - case UIGestureRecognizerStateEnded:  
164 - case UIGestureRecognizerStateCancelled:  
165 - self.layer.borderColor = [UIColor clearColor].CGColor;  
166 - if (self.delegate && [self.delegate respondsToSelector:@selector(editViewValidRectEndChanged)]) {  
167 - [self.delegate editViewValidRectEndChanged];//滑动结束响应实现  
168 - }  
169 - break;  
170 -  
171 - default:  
172 - break;  
173 - }  
174 - 123 + #pragma mark - TODO: 2019.11.12 需要其他库依赖
  124 +// const CGFloat W = self.width;
  125 +// CGFloat minX = 0;
  126 +// CGFloat maxX = W;
  127 +//
  128 +// switch (pan.view.tag) {
  129 +// case 0: {
  130 +// //left视图响应
  131 +// maxX = rct.origin.x + rct.size.width - kItemWidth;
  132 +//
  133 +// point.x = MAX(minX, MIN(point.x, maxX));
  134 +// point.y = 0;
  135 +//
  136 +// rct.size.width -= (point.x - rct.origin.x);
  137 +// rct.origin.x = point.x;
  138 +// }
  139 +// break;
  140 +//
  141 +// case 1:
  142 +// {
  143 +// //right视图响应
  144 +// minX = rct.origin.x + kItemWidth/2;
  145 +// maxX = W - kItemWidth/2;
  146 +//
  147 +// point.x = MAX(minX, MIN(point.x, maxX));
  148 +// point.y = 0;
  149 +//
  150 +// rct.size.width = (point.x - rct.origin.x + kItemWidth/2);
  151 +// }
  152 +// break;
  153 +// }
  154 +//
  155 +// switch (pan.state) {
  156 +// case UIGestureRecognizerStateBegan:
  157 +// case UIGestureRecognizerStateChanged:
  158 +// if (self.delegate && [self.delegate respondsToSelector:@selector(editViewValidRectChanged)]) {
  159 +// [self.delegate editViewValidRectChanged];//滑动响应实现
  160 +// }
  161 +// break;
  162 +//
  163 +// case UIGestureRecognizerStateEnded:
  164 +// case UIGestureRecognizerStateCancelled:
  165 +// self.layer.borderColor = [UIColor clearColor].CGColor;
  166 +// if (self.delegate && [self.delegate respondsToSelector:@selector(editViewValidRectEndChanged)]) {
  167 +// [self.delegate editViewValidRectEndChanged];//滑动结束响应实现
  168 +// }
  169 +// break;
  170 +//
  171 +// default:
  172 +// break;
  173 +// }
  174 +//
  175 + //////////////////////////////
175 176
176 self.validRect = rct; 177 self.validRect = rct;
177 } 178 }
@@ -298,29 +299,30 @@ @@ -298,29 +299,30 @@
298 - (void)viewDidLayoutSubviews 299 - (void)viewDidLayoutSubviews
299 { 300 {
300 [super viewDidLayoutSubviews]; 301 [super viewDidLayoutSubviews];
301 -  
302 - UIEdgeInsets inset = UIEdgeInsetsZero;  
303 - if (@available(iOS 11, *)) {  
304 - inset = self.view.safeAreaInsets;  
305 - }  
306 -  
307 - self.playerLayer.frame = CGRectMake(15, inset.top>0?inset.top:30, KScreenWidth-30, KScreenHeight-160-inset.bottom);  
308 -  
309 - self.editView.frame = CGRectMake((KScreenWidth-kItemWidth*10)/2, KScreenHeight-100-inset.bottom, kItemWidth*10, kItemHeight);  
310 - self.editView.validRect = self.editView.bounds;  
311 - self.collectionView.frame = CGRectMake(inset.left, KScreenHeight-100-inset.bottom, KScreenWidth-inset.left-inset.right, kItemHeight);  
312 -  
313 - CGFloat leftOffset = ((KScreenWidth-kItemWidth*10)/2-inset.left);  
314 - CGFloat rightOffset = ((KScreenWidth-kItemWidth*10)/2-inset.right);  
315 - [self.collectionView setContentInset:UIEdgeInsetsMake(0, leftOffset, 0, rightOffset)];  
316 - [self.collectionView setContentOffset:CGPointMake(_offsetX-leftOffset, 0)];  
317 -  
318 - CGFloat bottomViewH = 44;  
319 - CGFloat bottomBtnH = 30;  
320 - _bottomView.frame = CGRectMake(0, KScreenHeight-bottomViewH-inset.bottom, KScreenWidth, kItemHeight);  
321 - _cancelBtn.frame = CGRectMake(10+inset.left, 7, 60, bottomBtnH);  
322 - _doneBtn.frame = CGRectMake(KScreenWidth-70-inset.right, 7, 60, bottomBtnH);  
323 - 302 + #pragma mark - TODO: 2019.11.12 需要其他库依赖
  303 +// UIEdgeInsets inset = UIEdgeInsetsZero;
  304 +// if (@available(iOS 11, *)) {
  305 +// inset = self.view.safeAreaInsets;
  306 +// }
  307 +//
  308 +// self.playerLayer.frame = CGRectMake(15, inset.top>0?inset.top:30, KScreenWidth-30, KScreenHeight-160-inset.bottom);
  309 +//
  310 +// self.editView.frame = CGRectMake((KScreenWidth-kItemWidth*10)/2, KScreenHeight-100-inset.bottom, kItemWidth*10, kItemHeight);
  311 +// self.editView.validRect = self.editView.bounds;
  312 +// self.collectionView.frame = CGRectMake(inset.left, KScreenHeight-100-inset.bottom, KScreenWidth-inset.left-inset.right, kItemHeight);
  313 +//
  314 +// CGFloat leftOffset = ((KScreenWidth-kItemWidth*10)/2-inset.left);
  315 +// CGFloat rightOffset = ((KScreenWidth-kItemWidth*10)/2-inset.right);
  316 +// [self.collectionView setContentInset:UIEdgeInsetsMake(0, leftOffset, 0, rightOffset)];
  317 +// [self.collectionView setContentOffset:CGPointMake(_offsetX-leftOffset, 0)];
  318 +//
  319 +// CGFloat bottomViewH = 44;
  320 +// CGFloat bottomBtnH = 30;
  321 +// _bottomView.frame = CGRectMake(0, KScreenHeight-bottomViewH-inset.bottom, KScreenWidth, kItemHeight);
  322 +// _cancelBtn.frame = CGRectMake(10+inset.left, 7, 60, bottomBtnH);
  323 +// _doneBtn.frame = CGRectMake(KScreenWidth-70-inset.right, 7, 60, bottomBtnH);
  324 +//
  325 + ///////////////////////////////////////
324 [self.playerLayer setBackgroundColor:[UIColor clearColor].CGColor]; 326 [self.playerLayer setBackgroundColor:[UIColor clearColor].CGColor];
325 } 327 }
326 328
@@ -377,7 +379,9 @@ @@ -377,7 +379,9 @@
377 [self.view addSubview:self.editView]; 379 [self.view addSubview:self.editView];
378 380
379 _indicatorLine = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 2, kItemHeight)]; 381 _indicatorLine = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 2, kItemHeight)];
380 - _indicatorLine.backgroundColor = [RGBOF(0x0BBE06) colorWithAlphaComponent:.7]; 382 + #pragma mark - TODO: 2019.11.12 需要其他库依赖
  383 +// _indicatorLine.backgroundColor = [RGBOF(0x0BBE06) colorWithAlphaComponent:.7];
  384 + /////////////////
381 } 385 }
382 386
383 - (void)creatBottomView 387 - (void)creatBottomView
@@ -393,12 +397,14 @@ @@ -393,12 +397,14 @@
393 [_cancelBtn setTitle:@"取消" forState:UIControlStateNormal]; 397 [_cancelBtn setTitle:@"取消" forState:UIControlStateNormal];
394 [_cancelBtn addTarget:self action:@selector(cancelBtn_click) forControlEvents:UIControlEventTouchUpInside]; 398 [_cancelBtn addTarget:self action:@selector(cancelBtn_click) forControlEvents:UIControlEventTouchUpInside];
395 [_bottomView addSubview:_cancelBtn]; 399 [_bottomView addSubview:_cancelBtn];
396 -  
397 - _doneBtn = [UIButton buttonWithType:UIButtonTypeCustom];  
398 - [_doneBtn setTitle:@"完成" forState:UIControlStateNormal];  
399 - [_doneBtn setBackgroundColor:[UIColor clearColor]];  
400 - [_doneBtn setTitleColor:RGBOF(0x0BBE06) forState:UIControlStateNormal];  
401 - _doneBtn.titleLabel.font = [UIFont systemFontOfSize:15]; 400 + #pragma mark - TODO: 2019.11.12 需要其他库依赖
  401 +// _doneBtn = [UIButton buttonWithType:UIButtonTypeCustom];
  402 +// [_doneBtn setTitle:@"完成" forState:UIControlStateNormal];
  403 +// [_doneBtn setBackgroundColor:[UIColor clearColor]];
  404 +//
  405 +// [_doneBtn setTitleColor:RGBOF(0x0BBE06) forState:UIControlStateNormal];
  406 +// _doneBtn.titleLabel.font = [UIFont systemFontOfSize:15];
  407 + ////////////////////////
402 _doneBtn.layer.masksToBounds = YES; 408 _doneBtn.layer.masksToBounds = YES;
403 _doneBtn.layer.cornerRadius = 3.0f; 409 _doneBtn.layer.cornerRadius = 3.0f;
404 [_doneBtn addTarget:self action:@selector(btnDone_click) forControlEvents:UIControlEventTouchUpInside]; 410 [_doneBtn addTarget:self action:@selector(btnDone_click) forControlEvents:UIControlEventTouchUpInside];
@@ -502,12 +508,23 @@ @@ -502,12 +508,23 @@
502 508
503 TZImagePickerController *_tzImagePickerVc = (TZImagePickerController *)self.navigationController; 509 TZImagePickerController *_tzImagePickerVc = (TZImagePickerController *)self.navigationController;
504 [_tzImagePickerVc showProgressHUD]; 510 [_tzImagePickerVc showProgressHUD];
  511 + _doneBtn.enabled = NO;
  512 + _cancelBtn.enabled = NO;
505 __weak typeof(self) weakSelf = self; 513 __weak typeof(self) weakSelf = self;
506 514
  515 + if (!_avAsset) {
  516 + [_tzImagePickerVc hideProgressHUD];
  517 + [_tzImagePickerVc showAlertWithTitle:@"编辑视频失败"];
  518 + _doneBtn.enabled = YES;
  519 + _cancelBtn.enabled = YES;
  520 + return;
  521 + }
507 [self exportEditVideoForAsset:_avAsset range:[self getTimeRange] complete:^(BOOL isSuc, id asset) { 522 [self exportEditVideoForAsset:_avAsset range:[self getTimeRange] complete:^(BOOL isSuc, id asset) {
508 [_tzImagePickerVc hideProgressHUD]; 523 [_tzImagePickerVc hideProgressHUD];
  524 +
509 if (isSuc) { 525 if (isSuc) {
510 [self stopPlay]; 526 [self stopPlay];
  527 + [_tzImagePickerVc showProgressHUD];
511 TZAssetModel *editModel = [TZAssetModel modelWithAsset:asset type:TZAssetModelMediaTypeVideo]; 528 TZAssetModel *editModel = [TZAssetModel modelWithAsset:asset type:TZAssetModelMediaTypeVideo];
512 529
513 // 如果没有选中过照片 点击确定时选中当前预览的照片 530 // 如果没有选中过照片 点击确定时选中当前预览的照片
@@ -519,8 +536,17 @@ @@ -519,8 +536,17 @@
519 weakSelf.doneButtonEditClickBlock(_tzImagePickerVc.isSelectOriginalPhoto); 536 weakSelf.doneButtonEditClickBlock(_tzImagePickerVc.isSelectOriginalPhoto);
520 } 537 }
521 [_tzImagePickerVc hideProgressHUD]; 538 [_tzImagePickerVc hideProgressHUD];
  539 + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
  540 + self->_doneBtn.enabled = YES;
  541 + self->_cancelBtn.enabled = YES;
  542 + });
  543 +
522 }else{ 544 }else{
523 [_tzImagePickerVc showAlertWithTitle:@"编辑失败"]; 545 [_tzImagePickerVc showAlertWithTitle:@"编辑失败"];
  546 + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.5 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{
  547 + self->_doneBtn.enabled = YES;
  548 + self->_cancelBtn.enabled = YES;
  549 + });
524 } 550 }
525 551
526 }]; 552 }];
CNLiveImagePickerController/Classes/CNImagePickerController.m
@@ -44,254 +44,256 @@ @@ -44,254 +44,256 @@
44 // imagePickerVc.oKButtonTitleColorDisabled = [UIColor lightGrayColor]; 44 // imagePickerVc.oKButtonTitleColorDisabled = [UIColor lightGrayColor];
45 // imagePickerVc.oKButtonTitleColorNormal = [UIColor greenColor]; 45 // imagePickerVc.oKButtonTitleColorNormal = [UIColor greenColor];
46 // imagePickerVc.navigationBar.translucent = NO; 46 // imagePickerVc.navigationBar.translucent = NO;
47 - self.iconThemeColor = RGBOF(0x00BBE06);// 主体颜色  
48 - self.showPhotoCannotSelectLayer = YES;//达到上限是否有浮层  
49 - self.cannotSelectLayerColor = [[UIColor whiteColor] colorWithAlphaComponent:0.8];//设置达到上限的浮层  
50 - self.photoDefImage = [UIImage imageNamed:@"photo_cell_normal"];  
51 - self.photoSelImage = [UIImage qmui_imageWithColor:RGBOF(0x0BBE06) size:CGSizeMake(22, 22) cornerRadius:11];  
52 - self.photoOriginDefImage = [UIImage imageNamed:@"photo_original_nor"];  
53 -  
54 - // 3. Set allow picking video & photo & originalPhoto or not  
55 - // 3. 设置是否可以选择视频/图片/原图/gif(未开放)  
56 - self.allowPickingVideo = YES;// 显示视频  
57 - self.allowPickingImage = YES;// 显示图片  
58 - self.allowPickingOriginalPhoto = YES; //显示原图  
59 - self.allowPickingGif = NO;// 显示GIF  
60 - self.allowPickingMultipleVideo = YES; // 是否可以多选视频  
61 -  
62 - // 4. 照片排列按修改时间升序  
63 - self.sortAscendingByModificationDate = YES;  
64 -  
65 - // imagePickerVc.minImagesCount = 3;  
66 - // imagePickerVc.alwaysEnableDoneBtn = YES;  
67 -  
68 - // imagePickerVc.minPhotoWidthSelectable = 3000;  
69 - // imagePickerVc.minPhotoHeightSelectable = 2000;  
70 -  
71 - /// 5. Single selection mode, valid when maxImagesCount = 1  
72 - /// 5. 单选模式,maxImagesCount为1时才生效  
73 - self.showSelectBtn = NO;  
74 - self.allowCrop = NO;  
75 - self.needCircleCrop = NO;  
76 - // 设置横屏下的裁剪尺寸  
77 - // imagePickerVc.cropRectLandscape = CGRectMake((self.view.tz_height - widthHeight) / 2, left, widthHeight, widthHeight);  
78 - /*  
79 - [imagePickerVc setCropViewSettingBlock:^(UIView *cropView) {  
80 - cropView.layer.borderColor = [UIColor redColor].CGColor;  
81 - cropView.layer.borderWidth = 2.0;  
82 - }];*/  
83 -  
84 - //imagePickerVc.allowPreview = NO;  
85 - // 自定义导航栏上的返回按钮  
86 - /*  
87 - [imagePickerVc setNavLeftBarButtonSettingBlock:^(UIButton *leftButton){  
88 - [leftButton setImage:[UIImage imageNamed:@"back"] forState:UIControlStateNormal];  
89 - [leftButton setImageEdgeInsets:UIEdgeInsetsMake(0, -10, 0, 20)];  
90 - }];  
91 - imagePickerVc.delegate = self;  
92 - */  
93 -  
94 - self.statusBarStyle = UIStatusBarStyleDefault;//状态栏黑色  
95 -  
96 - self.showSelectedIndex = YES; // 设置是否显示图片序号  
97 -  
98 - self.naviBgColor = RGBOF(0xFFFFFF);//导航栏颜色  
99 - self.naviTitleColor = RGBOF(0x282828);//相册title  
100 - self.naviTitleFont = [UIFont fontWithName:@"PingFangSC-Medium" size:18];//title文字大小  
101 - [self setNavLeftBarButtonSettingBlock:^(UIButton *leftButton) {//设置返回按钮图标  
102 - [leftButton setImage:[UIImage imageNamed:@"photo_back"] forState:UIControlStateNormal];//返回按钮图片  
103 - [leftButton setTitle:@"返回" forState:UIControlStateNormal];//设置文字大小  
104 - [leftButton setTitleColor:RGBOF(0x282828) forState:UIControlStateNormal];//设置文字颜色  
105 - leftButton.titleLabel.font = [UIFont systemFontOfSize:15];//设置文字大小  
106 - leftButton.imageEdgeInsets = UIEdgeInsetsMake(0, -7, 0, +7);//设置图片边缘  
107 - }];  
108 - self.barItemTextColor = RGBOF(0x282828);//设置barItem文字颜色  
109 - self.barItemTextFont = [UIFont systemFontOfSize:15];  
110 -  
111 - // 设置首选语言 / Set preferred language  
112 - // imagePickerVc.preferredLanguage = @"zh-Hans";  
113 -  
114 - // 设置languageBundle以使用其它语言 / Set languageBundle to use other language  
115 - // imagePickerVc.languageBundle = [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:@"tz-ru" ofType:@"lproj"]];  
116 -  
117 - /// 【自定义各页面/组件的样式】在界面初始化/组件setModel完成后调用,允许外界修改样式等  
118 - //相册  
119 - [self setPhotoPickerPageUIConfigBlock:^(UICollectionView *collectionView, UIView *bottomToolBar, UIButton *previewButton, UIButton *originalPhotoButton, UILabel *originalPhotoLabel, UIButton *doneButton, UIImageView *numberImageView, UILabel *numberLabel, UIView *divideLine) {  
120 -  
121 - //底部栏  
122 - [bottomToolBar setBackgroundColor:RGBOF(0xFFFFFF)];  
123 -  
124 - //预览  
125 - previewButton.titleLabel.font = [UIFont systemFontOfSize:16];  
126 - [previewButton setTitleColor:RGBOF(0xB3B3B3) forState:UIControlStateDisabled];//禁用  
127 - [previewButton setTitleColor:RGBOF(0x000000) forState:UIControlStateNormal];//默认  
128 -  
129 - //原图按钮  
130 - [originalPhotoButton setImage:[UIImage imageNamed:@"photo_original_normal"] forState:UIControlStateDisabled];//禁用  
131 - [originalPhotoButton setImage:[UIImage imageNamed:@"photo_original_normal"] forState:UIControlStateNormal];//默认  
132 - [originalPhotoButton setImage:[UIImage imageNamed:@"photo_original_select"] forState:UIControlStateSelected];//选中  
133 - originalPhotoButton.titleLabel.font = [UIFont systemFontOfSize:16];  
134 - [originalPhotoButton setTitleColor:RGBOF(0xB3B3B3) forState:UIControlStateDisabled];  
135 - [originalPhotoButton setTitleColor:RGBOF(0x000000) forState:UIControlStateNormal];  
136 -  
137 - //原图文字提示  
138 - originalPhotoLabel.font = [UIFont fontWithName:@"PingFang-SC-Regular" size:16];  
139 - originalPhotoLabel.textColor = RGBOF(0xB3B3B3);  
140 - originalPhotoLabel.hidden = YES;  
141 -  
142 - //选中提示  
143 - numberImageView = [UIImageView new];  
144 - numberLabel = [UILabel new];  
145 -  
146 - //完成按钮  
147 - doneButton.titleLabel.font = [UIFont systemFontOfSize:13];  
148 - [doneButton setTitle:@"完成" forState:UIControlStateDisabled];  
149 - [doneButton setTitleColor:RGBAOF(0xFFFFFF, 0.5) forState:UIControlStateDisabled];  
150 - [doneButton setTitleColor:RGBOF(0xFFFFFF) forState:UIControlStateNormal];  
151 -  
152 - //颜色绘制成图片  
153 - UIImage *dis_image = [UIImage qmui_imageWithColor:RGBAOF(0x0BBE06, 0.5)];  
154 - [doneButton setBackgroundImage:dis_image forState:UIControlStateDisabled];  
155 - UIImage *nor_image = [UIImage qmui_imageWithColor:RGBOF(0x0BBE06)];  
156 - [doneButton setBackgroundImage:nor_image forState:UIControlStateNormal];  
157 - doneButton.layer.masksToBounds = YES;  
158 - doneButton.layer.cornerRadius = 5;  
159 -  
160 - //分割线  
161 - [divideLine setBackgroundColor:RGBOF(0xDEDEDE)];  
162 -  
163 - }];  
164 -  
165 - //图片预览  
166 - [self setPhotoPreviewPageUIConfigBlock:^(UICollectionView *collectionView, UIView *naviBar, UIButton *backButton, UIButton *selectButton, UILabel *indexLabel, UIView *toolBar, UIButton *originalPhotoButton, UILabel *originalPhotoLabel, UIButton *doneButton, UIImageView *numberImageView, UILabel *numberLabel) {  
167 -  
168 - //返回按钮  
169 - [backButton setImage:[UIImage imageNamed:@"photo_original_back"] forState:UIControlStateNormal];  
170 - //选择按钮  
171 - [selectButton setImage:[UIImage imageNamed:@"photo_original_nor"] forState:UIControlStateNormal];  
172 - [selectButton setImage:[UIImage qmui_imageWithColor:RGBOF(0x0BBE06) size:CGSizeMake(28, 28) cornerRadius:14] forState:UIControlStateSelected];  
173 - [selectButton setTitle:@"" forState:UIControlStateDisabled];  
174 -  
175 - //原图按钮  
176 - [originalPhotoButton setImage:[UIImage imageNamed:@"photo_original_normal"] forState:UIControlStateDisabled];//禁用  
177 - [originalPhotoButton setImage:[UIImage imageNamed:@"photo_original_normal"] forState:UIControlStateNormal];//默认  
178 - [originalPhotoButton setImage:[UIImage imageNamed:@"photo_original_select"] forState:UIControlStateSelected];//选中  
179 - originalPhotoButton.titleLabel.font = [UIFont systemFontOfSize:16];  
180 - [originalPhotoButton setTitleColor:RGBOF(0xB3B3B3) forState:UIControlStateDisabled];  
181 - [originalPhotoButton setTitleColor:RGBAOF(0xFFFFFF, 0.7) forState:UIControlStateNormal];  
182 - //原图内容隐藏  
183 - originalPhotoLabel.hidden = YES;  
184 -  
185 - //完成按钮  
186 - doneButton.titleLabel.font = [UIFont systemFontOfSize:13];  
187 - [doneButton setTitle:@"完成" forState:UIControlStateDisabled];  
188 - [doneButton setTitleColor:RGBOF(0xFFFFFF) forState:UIControlStateDisabled];  
189 - [doneButton setTitleColor:RGBOF(0xFFFFFF) forState:UIControlStateNormal];  
190 -  
191 - //颜色绘制成图片  
192 - UIImage *dis_image = [UIImage qmui_imageWithColor:RGBAOF(0x0BBE06, 0.5)];  
193 - [doneButton setBackgroundImage:dis_image forState:UIControlStateSelected];  
194 - UIImage *nor_image = [UIImage qmui_imageWithColor:RGBOF(0x0BBE06)];  
195 - [doneButton setBackgroundImage:nor_image forState:UIControlStateNormal];  
196 - doneButton.layer.masksToBounds = YES;  
197 - doneButton.layer.cornerRadius = 5;  
198 - }];  
199 -  
200 - //视频预览  
201 - [self setVideoPreviewPageUIConfigBlock:^(UIButton *playButton, UIView *toolBar, UIButton *doneButton) {  
202 -  
203 - //完成按钮  
204 - doneButton.titleLabel.font = [UIFont systemFontOfSize:13];  
205 - [doneButton setTitle:@"完成" forState:UIControlStateDisabled];  
206 - [doneButton setTitleColor:RGBOF(0xFFFFFF) forState:UIControlStateDisabled];  
207 - [doneButton setTitleColor:RGBOF(0xFFFFFF) forState:UIControlStateNormal];  
208 -  
209 - //颜色绘制成图片  
210 - UIImage *dis_image = [UIImage qmui_imageWithColor:RGBAOF(0x0BBE06, 0.5)];  
211 - [doneButton setBackgroundImage:dis_image forState:UIControlStateSelected];  
212 - UIImage *nor_image = [UIImage qmui_imageWithColor:RGBOF(0x0BBE06)];  
213 - [doneButton setBackgroundImage:nor_image forState:UIControlStateNormal];  
214 - doneButton.layer.masksToBounds = YES;  
215 - doneButton.layer.cornerRadius = 5;  
216 -  
217 - }];  
218 -  
219 - //gif预览  
220 - [self setGifPreviewPageUIConfigBlock:^(UIView *toolBar, UIButton *doneButton) {  
221 -  
222 - //完成按钮  
223 - doneButton.titleLabel.font = [UIFont systemFontOfSize:13];  
224 - [doneButton setTitle:@"完成" forState:UIControlStateDisabled];  
225 - [doneButton setTitleColor:RGBOF(0xFFFFFF) forState:UIControlStateDisabled];  
226 - [doneButton setTitleColor:RGBOF(0xFFFFFF) forState:UIControlStateNormal];  
227 -  
228 - //颜色绘制成图片  
229 - UIImage *dis_image = [UIImage qmui_imageWithColor:RGBAOF(0x0BBE06, 0.5)];  
230 - [doneButton setBackgroundImage:dis_image forState:UIControlStateSelected];  
231 - UIImage *nor_image = [UIImage qmui_imageWithColor:RGBOF(0x0BBE06)];  
232 - [doneButton setBackgroundImage:nor_image forState:UIControlStateNormal];  
233 - doneButton.layer.masksToBounds = YES;  
234 - doneButton.layer.cornerRadius = 5;  
235 -  
236 - }];  
237 - //相册cell  
238 - [self setAssetCellDidSetModelBlock:^(TZAssetCell *cell, UIImageView *imageView, UIImageView *selectImageView, UILabel *indexLabel, UIView *bottomView, UILabel *timeLength, UIImageView *videoImgView) {  
239 -  
240 -  
241 - }];  
242 - //相簿  
243 - [self setAlbumCellDidSetModelBlock:^(TZAlbumCell *cell, UIImageView *posterImageView, UILabel *titleLabel) {  
244 - [posterImageView setBackgroundColor:[UIColor blueColor]];  
245 - [posterImageView setBackgroundColor:[UIColor blueColor]];  
246 -  
247 - }];  
248 -  
249 -  
250 - /// 【自定义各页面/组件的frame】在界面viewDidLayoutSubviews/组件layoutSubviews后调用,允许外界修改frame等  
251 - //相册  
252 - [self setPhotoPickerPageDidLayoutSubviewsBlock:^(UICollectionView *collectionView, UIView *bottomToolBar, UIButton *previewButton, UIButton *originalPhotoButton, UILabel *originalPhotoLabel, UIButton *doneButton, UIImageView *numberImageView, UILabel *numberLabel, UIView *divideLine) {  
253 -  
254 - CGRect frame = bottomToolBar.frame;  
255 - doneButton.frame = CGRectMake(frame.size.width - 60 - 13, frame.size.height /2 - 15 - (kVerticalBottomSafeHeight /2), 60, 30);  
256 -  
257 - CGRect originalPhotoLabelFrame = originalPhotoLabel.frame;  
258 - CGFloat originalX = (bottomToolBar.frame.size.width - originalPhotoLabelFrame.size.width) /2;  
259 - CGFloat originalY = originalPhotoLabelFrame.origin.y;  
260 - originalPhotoButton.frame = CGRectMake(originalX, originalY, originalPhotoLabelFrame.size.width, originalPhotoLabelFrame.size.height);  
261 -  
262 -  
263 - }];  
264 - //图片预览  
265 - [self setPhotoPreviewPageDidLayoutSubviewsBlock:^(UICollectionView *collectionView, UIView *naviBar, UIButton *backButton, UIButton *selectButton, UILabel *indexLabel, UIView *toolBar, UIButton *originalPhotoButton, UILabel *originalPhotoLabel, UIButton *doneButton, UIImageView *numberImageView, UILabel *numberLabel) {  
266 -  
267 - CGRect frame = toolBar.frame;  
268 - doneButton.frame = CGRectMake(frame.size.width - 60 - 13, frame.size.height /2 - 15 - (kVerticalBottomSafeHeight /2), 60, 30);  
269 -  
270 - }];  
271 - //视频预览  
272 - [self setVideoPreviewPageDidLayoutSubviewsBlock:^(UIButton *playButton, UIView *toolBar, UIButton *doneButton) {  
273 -  
274 - CGRect frame = toolBar.frame;  
275 - doneButton.frame = CGRectMake(frame.size.width - 60 - 13, frame.size.height /2 - 15 - (kVerticalBottomSafeHeight /2), 60, 30);  
276 -  
277 - }];  
278 - //gif预览  
279 - [self setGifPreviewPageDidLayoutSubviewsBlock:^(UIView *toolBar, UIButton *doneButton) {  
280 -  
281 - CGRect frame = toolBar.frame;  
282 - doneButton.frame = CGRectMake(frame.size.width - 60 - 13, frame.size.height /2 - 15 - (kVerticalBottomSafeHeight /2), 60, 30);  
283 -  
284 - }];  
285 - //相册cell  
286 - [self setAssetCellDidLayoutSubviewsBlock:^(TZAssetCell *cell, UIImageView *imageView, UIImageView *selectImageView, UILabel *indexLabel, UIView *bottomView, UILabel *timeLength, UIImageView *videoImgView) {  
287 - }];  
288 - //相簿  
289 - [self setAlbumCellDidLayoutSubviewsBlock:^(TZAlbumCell *cell, UIImageView *posterImageView, UILabel *titleLabel) {  
290 -  
291 - }];  
292 -  
293 - //设置图片个数  
294 - self.photoNumberIconImage = [UIImage new]; 47 + #pragma mark - TODO: 2019.11.12 需要其他库依赖
  48 +// self.iconThemeColor = RGBOF(0x00BBE06);// 主体颜色
  49 +// self.showPhotoCannotSelectLayer = YES;//达到上限是否有浮层
  50 +// self.cannotSelectLayerColor = [[UIColor whiteColor] colorWithAlphaComponent:0.8];//设置达到上限的浮层
  51 +// self.photoDefImage = [UIImage imageNamed:@"photo_cell_normal"];
  52 +// self.photoSelImage = [UIImage qmui_imageWithColor:RGBOF(0x0BBE06) size:CGSizeMake(22, 22) cornerRadius:11];
  53 +// self.photoOriginDefImage = [UIImage imageNamed:@"photo_original_nor"];
  54 +//
  55 +// // 3. Set allow picking video & photo & originalPhoto or not
  56 +// // 3. 设置是否可以选择视频/图片/原图/gif(未开放)
  57 +// self.allowPickingVideo = YES;// 显示视频
  58 +// self.allowPickingImage = YES;// 显示图片
  59 +// self.allowPickingOriginalPhoto = YES; //显示原图
  60 +// self.allowPickingGif = NO;// 显示GIF
  61 +// self.allowPickingMultipleVideo = YES; // 是否可以多选视频
  62 +//
  63 +// // 4. 照片排列按修改时间升序
  64 +// self.sortAscendingByModificationDate = YES;
  65 +//
  66 +// // imagePickerVc.minImagesCount = 3;
  67 +// // imagePickerVc.alwaysEnableDoneBtn = YES;
  68 +//
  69 +// // imagePickerVc.minPhotoWidthSelectable = 3000;
  70 +// // imagePickerVc.minPhotoHeightSelectable = 2000;
  71 +//
  72 +// /// 5. Single selection mode, valid when maxImagesCount = 1
  73 +// /// 5. 单选模式,maxImagesCount为1时才生效
  74 +// self.showSelectBtn = NO;
  75 +// self.allowCrop = NO;
  76 +// self.needCircleCrop = NO;
  77 +// // 设置横屏下的裁剪尺寸
  78 +// // imagePickerVc.cropRectLandscape = CGRectMake((self.view.tz_height - widthHeight) / 2, left, widthHeight, widthHeight);
  79 +// /*
  80 +// [imagePickerVc setCropViewSettingBlock:^(UIView *cropView) {
  81 +// cropView.layer.borderColor = [UIColor redColor].CGColor;
  82 +// cropView.layer.borderWidth = 2.0;
  83 +// }];*/
  84 +//
  85 +// //imagePickerVc.allowPreview = NO;
  86 +// // 自定义导航栏上的返回按钮
  87 +// /*
  88 +// [imagePickerVc setNavLeftBarButtonSettingBlock:^(UIButton *leftButton){
  89 +// [leftButton setImage:[UIImage imageNamed:@"back"] forState:UIControlStateNormal];
  90 +// [leftButton setImageEdgeInsets:UIEdgeInsetsMake(0, -10, 0, 20)];
  91 +// }];
  92 +// imagePickerVc.delegate = self;
  93 +// */
  94 +//
  95 +// self.statusBarStyle = UIStatusBarStyleDefault;//状态栏黑色
  96 +//
  97 +// self.showSelectedIndex = YES; // 设置是否显示图片序号
  98 +//
  99 +// self.naviBgColor = RGBOF(0xFFFFFF);//导航栏颜色
  100 +// self.naviTitleColor = RGBOF(0x282828);//相册title
  101 +// self.naviTitleFont = [UIFont fontWithName:@"PingFangSC-Medium" size:18];//title文字大小
  102 +// [self setNavLeftBarButtonSettingBlock:^(UIButton *leftButton) {//设置返回按钮图标
  103 +// [leftButton setImage:[UIImage imageNamed:@"photo_back"] forState:UIControlStateNormal];//返回按钮图片
  104 +// [leftButton setTitle:@"返回" forState:UIControlStateNormal];//设置文字大小
  105 +// [leftButton setTitleColor:RGBOF(0x282828) forState:UIControlStateNormal];//设置文字颜色
  106 +// leftButton.titleLabel.font = [UIFont systemFontOfSize:15];//设置文字大小
  107 +// leftButton.imageEdgeInsets = UIEdgeInsetsMake(0, -7, 0, +7);//设置图片边缘
  108 +// }];
  109 +// self.barItemTextColor = RGBOF(0x282828);//设置barItem文字颜色
  110 +// self.barItemTextFont = [UIFont systemFontOfSize:15];
  111 +//
  112 +// // 设置首选语言 / Set preferred language
  113 +// // imagePickerVc.preferredLanguage = @"zh-Hans";
  114 +//
  115 +// // 设置languageBundle以使用其它语言 / Set languageBundle to use other language
  116 +// // imagePickerVc.languageBundle = [NSBundle bundleWithPath:[[NSBundle mainBundle] pathForResource:@"tz-ru" ofType:@"lproj"]];
  117 +//
  118 +// /// 【自定义各页面/组件的样式】在界面初始化/组件setModel完成后调用,允许外界修改样式等
  119 +// //相册
  120 +// [self setPhotoPickerPageUIConfigBlock:^(UICollectionView *collectionView, UIView *bottomToolBar, UIButton *previewButton, UIButton *originalPhotoButton, UILabel *originalPhotoLabel, UIButton *doneButton, UIImageView *numberImageView, UILabel *numberLabel, UIView *divideLine) {
  121 +//
  122 +// //底部栏
  123 +// [bottomToolBar setBackgroundColor:RGBOF(0xFFFFFF)];
  124 +//
  125 +// //预览
  126 +// previewButton.titleLabel.font = [UIFont systemFontOfSize:16];
  127 +// [previewButton setTitleColor:RGBOF(0xB3B3B3) forState:UIControlStateDisabled];//禁用
  128 +// [previewButton setTitleColor:RGBOF(0x000000) forState:UIControlStateNormal];//默认
  129 +//
  130 +// //原图按钮
  131 +// [originalPhotoButton setImage:[UIImage imageNamed:@"photo_original_normal"] forState:UIControlStateDisabled];//禁用
  132 +// [originalPhotoButton setImage:[UIImage imageNamed:@"photo_original_normal"] forState:UIControlStateNormal];//默认
  133 +// [originalPhotoButton setImage:[UIImage imageNamed:@"photo_original_select"] forState:UIControlStateSelected];//选中
  134 +// originalPhotoButton.titleLabel.font = [UIFont systemFontOfSize:16];
  135 +// [originalPhotoButton setTitleColor:RGBOF(0xB3B3B3) forState:UIControlStateDisabled];
  136 +// [originalPhotoButton setTitleColor:RGBOF(0x000000) forState:UIControlStateNormal];
  137 +//
  138 +// //原图文字提示
  139 +// originalPhotoLabel.font = [UIFont fontWithName:@"PingFang-SC-Regular" size:16];
  140 +// originalPhotoLabel.textColor = RGBOF(0xB3B3B3);
  141 +// originalPhotoLabel.hidden = YES;
  142 +//
  143 +// //选中提示
  144 +// numberImageView = [UIImageView new];
  145 +// numberLabel = [UILabel new];
  146 +//
  147 +// //完成按钮
  148 +// doneButton.titleLabel.font = [UIFont systemFontOfSize:13];
  149 +// [doneButton setTitle:@"完成" forState:UIControlStateDisabled];
  150 +// [doneButton setTitleColor:RGBAOF(0xFFFFFF, 0.5) forState:UIControlStateDisabled];
  151 +// [doneButton setTitleColor:RGBOF(0xFFFFFF) forState:UIControlStateNormal];
  152 +//
  153 +// //颜色绘制成图片
  154 +// UIImage *dis_image = [UIImage qmui_imageWithColor:RGBAOF(0x0BBE06, 0.5)];
  155 +// [doneButton setBackgroundImage:dis_image forState:UIControlStateDisabled];
  156 +// UIImage *nor_image = [UIImage qmui_imageWithColor:RGBOF(0x0BBE06)];
  157 +// [doneButton setBackgroundImage:nor_image forState:UIControlStateNormal];
  158 +// doneButton.layer.masksToBounds = YES;
  159 +// doneButton.layer.cornerRadius = 5;
  160 +//
  161 +// //分割线
  162 +// [divideLine setBackgroundColor:RGBOF(0xDEDEDE)];
  163 +//
  164 +// }];
  165 +
  166 +// //图片预览
  167 +// [self setPhotoPreviewPageUIConfigBlock:^(UICollectionView *collectionView, UIView *naviBar, UIButton *backButton, UIButton *selectButton, UILabel *indexLabel, UIView *toolBar, UIButton *originalPhotoButton, UILabel *originalPhotoLabel, UIButton *doneButton, UIImageView *numberImageView, UILabel *numberLabel) {
  168 +//
  169 +// //返回按钮
  170 +// [backButton setImage:[UIImage imageNamed:@"photo_original_back"] forState:UIControlStateNormal];
  171 +// //选择按钮
  172 +// [selectButton setImage:[UIImage imageNamed:@"photo_original_nor"] forState:UIControlStateNormal];
  173 +// [selectButton setImage:[UIImage qmui_imageWithColor:RGBOF(0x0BBE06) size:CGSizeMake(28, 28) cornerRadius:14] forState:UIControlStateSelected];
  174 +// [selectButton setTitle:@"" forState:UIControlStateDisabled];
  175 +//
  176 +// //原图按钮
  177 +// [originalPhotoButton setImage:[UIImage imageNamed:@"photo_original_normal"] forState:UIControlStateDisabled];//禁用
  178 +// [originalPhotoButton setImage:[UIImage imageNamed:@"photo_original_normal"] forState:UIControlStateNormal];//默认
  179 +// [originalPhotoButton setImage:[UIImage imageNamed:@"photo_original_select"] forState:UIControlStateSelected];//选中
  180 +// originalPhotoButton.titleLabel.font = [UIFont systemFontOfSize:16];
  181 +// [originalPhotoButton setTitleColor:RGBOF(0xB3B3B3) forState:UIControlStateDisabled];
  182 +// [originalPhotoButton setTitleColor:RGBAOF(0xFFFFFF, 0.7) forState:UIControlStateNormal];
  183 +// //原图内容隐藏
  184 +// originalPhotoLabel.hidden = YES;
  185 +//
  186 +// //完成按钮
  187 +// doneButton.titleLabel.font = [UIFont systemFontOfSize:13];
  188 +// [doneButton setTitle:@"完成" forState:UIControlStateDisabled];
  189 +// [doneButton setTitleColor:RGBOF(0xFFFFFF) forState:UIControlStateDisabled];
  190 +// [doneButton setTitleColor:RGBOF(0xFFFFFF) forState:UIControlStateNormal];
  191 +//
  192 +// //颜色绘制成图片
  193 +// UIImage *dis_image = [UIImage qmui_imageWithColor:RGBAOF(0x0BBE06, 0.5)];
  194 +// [doneButton setBackgroundImage:dis_image forState:UIControlStateSelected];
  195 +// UIImage *nor_image = [UIImage qmui_imageWithColor:RGBOF(0x0BBE06)];
  196 +// [doneButton setBackgroundImage:nor_image forState:UIControlStateNormal];
  197 +// doneButton.layer.masksToBounds = YES;
  198 +// doneButton.layer.cornerRadius = 5;
  199 +// }];
  200 +//
  201 +// //视频预览
  202 +// [self setVideoPreviewPageUIConfigBlock:^(UIButton *playButton, UIView *toolBar, UIButton *doneButton) {
  203 +//
  204 +// //完成按钮
  205 +// doneButton.titleLabel.font = [UIFont systemFontOfSize:13];
  206 +// [doneButton setTitle:@"完成" forState:UIControlStateDisabled];
  207 +// [doneButton setTitleColor:RGBOF(0xFFFFFF) forState:UIControlStateDisabled];
  208 +// [doneButton setTitleColor:RGBOF(0xFFFFFF) forState:UIControlStateNormal];
  209 +//
  210 +// //颜色绘制成图片
  211 +// UIImage *dis_image = [UIImage qmui_imageWithColor:RGBAOF(0x0BBE06, 0.5)];
  212 +// [doneButton setBackgroundImage:dis_image forState:UIControlStateSelected];
  213 +// UIImage *nor_image = [UIImage qmui_imageWithColor:RGBOF(0x0BBE06)];
  214 +// [doneButton setBackgroundImage:nor_image forState:UIControlStateNormal];
  215 +// doneButton.layer.masksToBounds = YES;
  216 +// doneButton.layer.cornerRadius = 5;
  217 +//
  218 +// }];
  219 +//
  220 +// //gif预览
  221 +// [self setGifPreviewPageUIConfigBlock:^(UIView *toolBar, UIButton *doneButton) {
  222 +//
  223 +// //完成按钮
  224 +// doneButton.titleLabel.font = [UIFont systemFontOfSize:13];
  225 +// [doneButton setTitle:@"完成" forState:UIControlStateDisabled];
  226 +// [doneButton setTitleColor:RGBOF(0xFFFFFF) forState:UIControlStateDisabled];
  227 +// [doneButton setTitleColor:RGBOF(0xFFFFFF) forState:UIControlStateNormal];
  228 +//
  229 +// //颜色绘制成图片
  230 +// UIImage *dis_image = [UIImage qmui_imageWithColor:RGBAOF(0x0BBE06, 0.5)];
  231 +// [doneButton setBackgroundImage:dis_image forState:UIControlStateSelected];
  232 +// UIImage *nor_image = [UIImage qmui_imageWithColor:RGBOF(0x0BBE06)];
  233 +// [doneButton setBackgroundImage:nor_image forState:UIControlStateNormal];
  234 +// doneButton.layer.masksToBounds = YES;
  235 +// doneButton.layer.cornerRadius = 5;
  236 +//
  237 +// }];
  238 +// //相册cell
  239 +// [self setAssetCellDidSetModelBlock:^(TZAssetCell *cell, UIImageView *imageView, UIImageView *selectImageView, UILabel *indexLabel, UIView *bottomView, UILabel *timeLength, UIImageView *videoImgView) {
  240 +//
  241 +//
  242 +// }];
  243 +// //相簿
  244 +// [self setAlbumCellDidSetModelBlock:^(TZAlbumCell *cell, UIImageView *posterImageView, UILabel *titleLabel) {
  245 +// [posterImageView setBackgroundColor:[UIColor blueColor]];
  246 +// [posterImageView setBackgroundColor:[UIColor blueColor]];
  247 +//
  248 +// }];
  249 +//
  250 +//
  251 +// /// 【自定义各页面/组件的frame】在界面viewDidLayoutSubviews/组件layoutSubviews后调用,允许外界修改frame等
  252 +// //相册
  253 +// [self setPhotoPickerPageDidLayoutSubviewsBlock:^(UICollectionView *collectionView, UIView *bottomToolBar, UIButton *previewButton, UIButton *originalPhotoButton, UILabel *originalPhotoLabel, UIButton *doneButton, UIImageView *numberImageView, UILabel *numberLabel, UIView *divideLine) {
  254 +//
  255 +// CGRect frame = bottomToolBar.frame;
  256 +// doneButton.frame = CGRectMake(frame.size.width - 60 - 13, frame.size.height /2 - 15 - (kVerticalBottomSafeHeight /2), 60, 30);
  257 +//
  258 +// CGRect originalPhotoLabelFrame = originalPhotoLabel.frame;
  259 +// CGFloat originalX = (bottomToolBar.frame.size.width - originalPhotoLabelFrame.size.width) /2;
  260 +// CGFloat originalY = originalPhotoLabelFrame.origin.y;
  261 +// originalPhotoButton.frame = CGRectMake(originalX, originalY, originalPhotoLabelFrame.size.width, originalPhotoLabelFrame.size.height);
  262 +//
  263 +//
  264 +// }];
  265 +// //图片预览
  266 +// [self setPhotoPreviewPageDidLayoutSubviewsBlock:^(UICollectionView *collectionView, UIView *naviBar, UIButton *backButton, UIButton *selectButton, UILabel *indexLabel, UIView *toolBar, UIButton *originalPhotoButton, UILabel *originalPhotoLabel, UIButton *doneButton, UIImageView *numberImageView, UILabel *numberLabel) {
  267 +//
  268 +// CGRect frame = toolBar.frame;
  269 +// doneButton.frame = CGRectMake(frame.size.width - 60 - 13, frame.size.height /2 - 15 - (kVerticalBottomSafeHeight /2), 60, 30);
  270 +//
  271 +// }];
  272 +// //视频预览
  273 +// [self setVideoPreviewPageDidLayoutSubviewsBlock:^(UIButton *playButton, UIView *toolBar, UIButton *doneButton) {
  274 +//
  275 +// CGRect frame = toolBar.frame;
  276 +// doneButton.frame = CGRectMake(frame.size.width - 60 - 13, frame.size.height /2 - 15 - (kVerticalBottomSafeHeight /2), 60, 30);
  277 +//
  278 +// }];
  279 +// //gif预览
  280 +// [self setGifPreviewPageDidLayoutSubviewsBlock:^(UIView *toolBar, UIButton *doneButton) {
  281 +//
  282 +// CGRect frame = toolBar.frame;
  283 +// doneButton.frame = CGRectMake(frame.size.width - 60 - 13, frame.size.height /2 - 15 - (kVerticalBottomSafeHeight /2), 60, 30);
  284 +//
  285 +// }];
  286 +// //相册cell
  287 +// [self setAssetCellDidLayoutSubviewsBlock:^(TZAssetCell *cell, UIImageView *imageView, UIImageView *selectImageView, UILabel *indexLabel, UIView *bottomView, UILabel *timeLength, UIImageView *videoImgView) {
  288 +// }];
  289 +// //相簿
  290 +// [self setAlbumCellDidLayoutSubviewsBlock:^(TZAlbumCell *cell, UIImageView *posterImageView, UILabel *titleLabel) {
  291 +//
  292 +// }];
  293 +//
  294 +// //设置图片个数
  295 +// self.photoNumberIconImage = [UIImage new];
  296 + ////////////////////////////////////////
295 297
296 } 298 }
297 299
CNLiveImagePickerController/Classes/CNImagePickerManager.m
@@ -23,27 +23,29 @@ @@ -23,27 +23,29 @@
23 [imagePickerVc configTZImagePicker];//基本配置 23 [imagePickerVc configTZImagePicker];//基本配置
24 //特殊配置 24 //特殊配置
25 switch (enterType) { 25 switch (enterType) {
26 - case CNImagePickerEnterTypeFriendsCircle:  
27 - imagePickerVc.maxEditVideoTime = kFriendsCircle_limit_video_maxEdit;//编辑长度  
28 - imagePickerVc.maxVideoDuration = kFriendsCircle_limit_video_max;//编辑视频最大长度  
29 - // 3. 设置是否可以混选选择视频/图片/原图  
30 - imagePickerVc.allowPickingMultipleVideo = NO;  
31 - break;  
32 - case CNImagePickerEnterTypeComment:  
33 -#pragma mark - TODO:根据不同设置  
34 - break;  
35 - case CNImagePickerEnterTypeSweepCode:  
36 -  
37 - break;  
38 - case CNImagePickerEnterTypeChat:  
39 -  
40 - break;  
41 - case CNImagePickerEnterTypeWitness:  
42 - imagePickerVc.allowPickingImage = NO;// 显示图片  
43 - imagePickerVc.allowPickingMultipleVideo = NO;  
44 - imagePickerVc.maxEditVideoTime = kFriendsCircle_limit_video_maxEdit;//编辑长度  
45 - imagePickerVc.maxVideoDuration = kFriendsCircle_limit_video_max;//编辑视频最大长度  
46 - break; 26 + #pragma mark - TODO: 2019.11.12 需要其他库依赖
  27 +// case CNImagePickerEnterTypeFriendsCircle:
  28 +// imagePickerVc.maxEditVideoTime = kFriendsCircle_limit_video_maxEdit;//编辑长度
  29 +// imagePickerVc.maxVideoDuration = kFriendsCircle_limit_video_max;//编辑视频最大长度
  30 +// // 3. 设置是否可以混选选择视频/图片/原图
  31 +// imagePickerVc.allowPickingMultipleVideo = NO;
  32 +// break;
  33 +// case CNImagePickerEnterTypeComment:
  34 +//#pragma mark - TODO:根据不同设置
  35 +// break;
  36 +// case CNImagePickerEnterTypeSweepCode:
  37 +//
  38 +// break;
  39 +// case CNImagePickerEnterTypeChat:
  40 +//
  41 +// break;
  42 +// case CNImagePickerEnterTypeWitness:
  43 +// imagePickerVc.allowPickingImage = NO;// 显示图片
  44 +// imagePickerVc.allowPickingMultipleVideo = NO;
  45 +// imagePickerVc.maxEditVideoTime = kFriendsCircle_limit_video_maxEdit;//编辑长度
  46 +// imagePickerVc.maxVideoDuration = kFriendsCircle_limit_video_max;//编辑视频最大长度
  47 +// break;
  48 + //////////////////////////////
47 case CNImagePickedEnterTypeField: 49 case CNImagePickedEnterTypeField:
48 imagePickerVc.allowPickingImage = YES;// 显示图片 50 imagePickerVc.allowPickingImage = YES;// 显示图片
49 imagePickerVc.allowPickingMultipleVideo = NO; 51 imagePickerVc.allowPickingMultipleVideo = NO;
@@ -53,17 +55,19 @@ @@ -53,17 +55,19 @@
53 default://其他 55 default://其他
54 break; 56 break;
55 } 57 }
56 - 58 + imagePickerVc.modalPresentationStyle = UIModalPresentationFullScreen;
57 imagePickerVc.isSelectOriginalPhoto = isSelectOriginalPhoto;//是否选择原图 59 imagePickerVc.isSelectOriginalPhoto = isSelectOriginalPhoto;//是否选择原图
58 // 1.设置目前已经选中的图片数组 60 // 1.设置目前已经选中的图片数组
59 imagePickerVc.selectedAssets = selectedAssets; // 目前已经选中的图片数组 61 imagePickerVc.selectedAssets = selectedAssets; // 目前已经选中的图片数组
60 /// 5. Single selection mode, valid when maxImagesCount = 1 62 /// 5. Single selection mode, valid when maxImagesCount = 1
61 /// 5. 单选模式,maxImagesCount为1时才生效 63 /// 5. 单选模式,maxImagesCount为1时才生效
62 // 设置竖屏下的裁剪尺寸 64 // 设置竖屏下的裁剪尺寸
63 - NSInteger left = 30;  
64 - NSInteger widthHeight = vc.view.width - 2 * left;  
65 - NSInteger top = (vc.view.height - widthHeight) / 2;  
66 - imagePickerVc.cropRect = CGRectMake(left, top, widthHeight, widthHeight); 65 + #pragma mark - TODO: 2019.11.12 需要其他库依赖
  66 +// NSInteger left = 30;
  67 +// NSInteger widthHeight = vc.view.width - 2 * left;
  68 +// NSInteger top = (vc.view.height - widthHeight) / 2;
  69 +// imagePickerVc.cropRect = CGRectMake(left, top, widthHeight, widthHeight);
  70 + ////////////////////////
67 // 你可以通过block或者代理,来得到用户选择的照片. 71 // 你可以通过block或者代理,来得到用户选择的照片.
68 [imagePickerVc setDidFinishPickingPhotosHandle:^(NSArray<UIImage *> *photos, NSArray *assets, BOOL isSelectOriginalPhoto) { 72 [imagePickerVc setDidFinishPickingPhotosHandle:^(NSArray<UIImage *> *photos, NSArray *assets, BOOL isSelectOriginalPhoto) {
69 // 回调参数 73 // 回调参数
@@ -93,6 +97,7 @@ @@ -93,6 +97,7 @@
93 97
94 CNImagePickerController *imagePickerVc = [[CNImagePickerController alloc] initWithSelectedAssets:selectedAssets selectedPhotos:selectedPhotos index:index]; 98 CNImagePickerController *imagePickerVc = [[CNImagePickerController alloc] initWithSelectedAssets:selectedAssets selectedPhotos:selectedPhotos index:index];
95 [imagePickerVc configTZImagePicker];//基本配置 99 [imagePickerVc configTZImagePicker];//基本配置
  100 + imagePickerVc.modalPresentationStyle = UIModalPresentationFullScreen;
96 //特殊配置 101 //特殊配置
97 switch (enterType) { 102 switch (enterType) {
98 case CNImagePickerEnterTypeFriendsCircle: 103 case CNImagePickerEnterTypeFriendsCircle:
@@ -142,6 +147,7 @@ @@ -142,6 +147,7 @@
142 TZAssetModel *model = [TZAssetModel modelWithAsset:selectedAsset type:TZAssetModelMediaTypeVideo timeLength:@""]; 147 TZAssetModel *model = [TZAssetModel modelWithAsset:selectedAsset type:TZAssetModelMediaTypeVideo timeLength:@""];
143 videoVC.isOther = YES;//(LXG)相册外进入 148 videoVC.isOther = YES;//(LXG)相册外进入
144 videoVC.model = model; 149 videoVC.model = model;
  150 + videoVC.modalPresentationStyle = UIModalPresentationFullScreen;
145 [vc presentViewController:videoVC animated:YES completion:nil]; 151 [vc presentViewController:videoVC animated:YES completion:nil];
146 152
147 } 153 }
CNLiveImagePickerController/Classes/TZImageManager.m
@@ -887,13 +887,16 @@ static dispatch_once_t onceToken; @@ -887,13 +887,16 @@ static dispatch_once_t onceToken;
887 // NSString *outputPath = [NSHomeDirectory() stringByAppendingFormat:@"/tmp/output-%@.mp4", [formater stringFromDate:[NSDate date]]]; 887 // NSString *outputPath = [NSHomeDirectory() stringByAppendingFormat:@"/tmp/output-%@.mp4", [formater stringFromDate:[NSDate date]]];
888 NSString *outputPath = @""; 888 NSString *outputPath = @"";
889 if (self.conversationId) { 889 if (self.conversationId) {
890 - outputPath = [[CNLiveBusinessTools newChatFilePathByUserId:self.conversationId] stringByAppendingPathComponent:filaName];//聊天 890 + #pragma mark - TODO: 2019.11.12 需要其他库依赖
  891 +// outputPath = [[CNLiveBusinessTools newChatFilePathByUserId:self.conversationId] stringByAppendingPathComponent:filaName];//聊天
  892 + ///////////////
891 893
892 } 894 }
893 else 895 else
894 { 896 {
895 -  
896 - outputPath = [[CNLiveBusinessTools chatFilePathByUserId:[IMAPlatform sharedInstance].host.userId] stringByAppendingString:filaName];//朋友圈 897 + #pragma mark - TODO: 2019.11.12 需要其他库依赖
  898 +// outputPath = [[CNLiveBusinessTools chatFilePathByUserId:[IMAPlatform sharedInstance].host.userId] stringByAppendingString:filaName];//朋友圈
  899 + ///////////
897 } 900 }
898 NSLog(@"video outputPath = %@",outputPath); 901 NSLog(@"video outputPath = %@",outputPath);
899 902
CNLiveImagePickerController/Classes/TZImagePickerController.m
@@ -745,6 +745,7 @@ @@ -745,6 +745,7 @@
745 745
746 TZImagePickerController *imagePickerVc = (TZImagePickerController *)self.navigationController; 746 TZImagePickerController *imagePickerVc = (TZImagePickerController *)self.navigationController;
747 self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:imagePickerVc.cancelBtnTitleStr style:UIBarButtonItemStylePlain target:imagePickerVc action:@selector(cancelButtonClick)]; 747 self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:imagePickerVc.cancelBtnTitleStr style:UIBarButtonItemStylePlain target:imagePickerVc action:@selector(cancelButtonClick)];
  748 + [self.navigationItem.rightBarButtonItem setTintColor:[UIColor blackColor]];
748 } 749 }
749 750
750 - (void)viewWillAppear:(BOOL)animated { 751 - (void)viewWillAppear:(BOOL)animated {
CNLiveImagePickerController/Classes/TZPhotoPickerController.m
@@ -18,8 +18,9 @@ @@ -18,8 +18,9 @@
18 #import "TZLocationManager.h" 18 #import "TZLocationManager.h"
19 #import <MobileCoreServices/MobileCoreServices.h> 19 #import <MobileCoreServices/MobileCoreServices.h>
20 #import <AssetsLibrary/AssetsLibrary.h>///lxg 20 #import <AssetsLibrary/AssetsLibrary.h>///lxg
21 -#import "CNLiveUploadManager.h"  
22 - 21 +#pragma mark - TODO: 2019.11.12 需要其他库依赖
  22 +//#import "CNLiveUploadManager.h"
  23 +///////////
23 @implementation PHAsset (Qiniu) 24 @implementation PHAsset (Qiniu)
24 25
25 - (NSURL *)movieURL { 26 - (NSURL *)movieURL {
@@ -697,14 +698,15 @@ static CGFloat itemMargin = 5; @@ -697,14 +698,15 @@ static CGFloat itemMargin = 5;
697 698
698 __block NSURL *returnURL = nil; 699 __block NSURL *returnURL = nil;
699 TZImagePickerController *tzImagePickerVc = (TZImagePickerController *)self.navigationController; 700 TZImagePickerController *tzImagePickerVc = (TZImagePickerController *)self.navigationController;
700 -  
701 - [CNLiveUploadManager zipNewVideoWithAsset:model.asset conversationId:tzImagePickerVc.conversationId limitType:AppPhototLimitTypeChat progressCount:^(float progress) {  
702 -  
703 - } success:^(NSURL *url) {  
704 - returnURL = url;  
705 - } failure:^{  
706 -  
707 - }]; 701 +#pragma mark - TODO: 2019.11.12 需要其他库依赖
  702 +// [CNLiveUploadManager zipNewVideoWithAsset:model.asset conversationId:tzImagePickerVc.conversationId limitType:AppPhototLimitTypeChat progressCount:^(float progress) {
  703 +//
  704 +// } success:^(NSURL *url) {
  705 +// returnURL = url;
  706 +// } failure:^{
  707 +//
  708 +// }];
  709 + ////////////
708 710
709 return returnURL; 711 return returnURL;
710 712
CNLiveImagePickerController/Classes/TZPhotoPreviewCell.m
@@ -14,8 +14,11 @@ @@ -14,8 +14,11 @@
14 #import "TZImageCropManager.h" 14 #import "TZImageCropManager.h"
15 #import <MediaPlayer/MediaPlayer.h> 15 #import <MediaPlayer/MediaPlayer.h>
16 #import "TZImagePickerController.h" 16 #import "TZImagePickerController.h"
17 -#import "CNAudioOrVideoMananger.h"  
18 17
  18 +#pragma mark - TODO: 2019.11.12 需要其他库依赖
  19 +//#import "CNAudioOrVideoMananger.h"
  20 +//#import "CNLiveSoundManager.h"
  21 +////////////////////////
19 @implementation TZAssetPreviewCell 22 @implementation TZAssetPreviewCell
20 23
21 - (instancetype)initWithFrame:(CGRect)frame { 24 - (instancetype)initWithFrame:(CGRect)frame {
@@ -369,14 +372,15 @@ @@ -369,14 +372,15 @@
369 372
370 - (void)configSubviews { 373 - (void)configSubviews {
371 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(pausePlayerAndShowNaviBar) name:UIApplicationWillResignActiveNotification object:nil]; 374 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(pausePlayerAndShowNaviBar) name:UIApplicationWillResignActiveNotification object:nil];
372 -  
373 - [[NSNotificationCenter defaultCenter] addObserver:self  
374 - selector:@selector(pauseVideoView:) name:CNVideoOrAudioEnterNotification  
375 - object:nil];  
376 -  
377 - [[NSNotificationCenter defaultCenter] addObserver:self  
378 - selector:@selector(playVideoView:) name:CNVideoOrAudioOutNotification  
379 - object:nil]; 375 + #pragma mark - TODO: 2019.11.12 需要其他库依赖
  376 +// [[NSNotificationCenter defaultCenter] addObserver:self
  377 +// selector:@selector(pauseVideoView:) name:CNVideoOrAudioEnterNotification
  378 +// object:nil];
  379 +//
  380 +// [[NSNotificationCenter defaultCenter] addObserver:self
  381 +// selector:@selector(playVideoView:) name:CNVideoOrAudioOutNotification
  382 +// object:nil];
  383 + ////////////////
380 384
381 } 385 }
382 386
@@ -662,12 +666,20 @@ @@ -662,12 +666,20 @@
662 666
663 - (void)playButtonClick { 667 - (void)playButtonClick {
664 668
665 - if ([CNAudioOrVideoMananger IsEnter]) {//在房间  
666 - [QMUITips showWithText:@"音视频通话中..." inView:AppKeyWindow hideAfterDelay:1.5];  
667 - return;  
668 - }else {  
669 - [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];  
670 - } 669 +// if ([CNAudioOrVideoMananger IsEnter]) {//在房间
  670 +// [QMUITips showWithText:@"音视频通话中..." inView:AppKeyWindow hideAfterDelay:1.5];
  671 +// return;
  672 +// }else {
  673 +// [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
  674 +// }
  675 + #pragma mark - TODO: 2019.11.12 需要其他库依赖
  676 +// if ([[CNLiveSoundManager sharedInstance] isEnterChatAudio]) {
  677 +// [QMUITips showWithText:@"音视频通话中..." inView:AppKeyWindow hideAfterDelay:1.5];
  678 +// return;
  679 +// }else {
  680 +// [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil];
  681 +// }
  682 + //////////////////////////
671 683
672 CMTime currentTime = _player.currentItem.currentTime; 684 CMTime currentTime = _player.currentItem.currentTime;
673 CMTime durationTime = _player.currentItem.duration; 685 CMTime durationTime = _player.currentItem.duration;
CNLiveImagePickerController/Classes/TZPhotoPreviewController.m
@@ -15,8 +15,9 @@ @@ -15,8 +15,9 @@
15 #import "TZImageCropManager.h" 15 #import "TZImageCropManager.h"
16 #import <AssetsLibrary/AssetsLibrary.h>///lxg 16 #import <AssetsLibrary/AssetsLibrary.h>///lxg
17 #import "CNEditVideoController.h" 17 #import "CNEditVideoController.h"
18 -#import "CNAudioOrVideoMananger.h"  
19 18
  19 +//#import "CNAudioOrVideoMananger.h"
  20 +//#import "CNLiveSoundManager.h"
20 @interface TZPhotoPreviewController ()<UICollectionViewDataSource,UICollectionViewDelegate,UIScrollViewDelegate> { 21 @interface TZPhotoPreviewController ()<UICollectionViewDataSource,UICollectionViewDelegate,UIScrollViewDelegate> {
21 UICollectionView *_collectionView; 22 UICollectionView *_collectionView;
22 UICollectionViewFlowLayout *_layout; 23 UICollectionViewFlowLayout *_layout;
@@ -487,10 +488,17 @@ @@ -487,10 +488,17 @@
487 ///lxg 编辑按钮实现 488 ///lxg 编辑按钮实现
488 - (void)editVideoButtonClick{ 489 - (void)editVideoButtonClick{
489 490
490 - if ([CNAudioOrVideoMananger IsEnter]) {//在房间  
491 - [QMUITips showWithText:@"音视频通话中..." inView:AppKeyWindow hideAfterDelay:1.5];  
492 - return;  
493 - } 491 + // if ([CNAudioOrVideoMananger IsEnter]) {//在房间
  492 + // [QMUITips showWithText:@"音视频通话中..." inView:AppKeyWindow hideAfterDelay:1.5];
  493 + // return;
  494 + // }
  495 +#pragma mark - TODO: 2019.11.12 需要其他库依赖
  496 +// if ([[CNLiveSoundManager sharedInstance]isEnterChatAudio]) {
  497 +// [QMUITips showWithText:@"音视频通话中..." inView:AppKeyWindow hideAfterDelay:1.5];
  498 +// return;
  499 +// }
  500 + /////////////////////////////////////
  501 +// [[CNLiveSoundManager sharedInstance] audioOrVideoCalling];
494 502
495 NSLog(@"开始编辑视频了"); 503 NSLog(@"开始编辑视频了");
496 TZImagePickerController *_tzImagePickerVc = (TZImagePickerController *)self.navigationController; 504 TZImagePickerController *_tzImagePickerVc = (TZImagePickerController *)self.navigationController;
CNLiveImagePickerController/Classes/TZVideoPlayerController.m
@@ -13,8 +13,10 @@ @@ -13,8 +13,10 @@
13 #import "TZAssetModel.h" 13 #import "TZAssetModel.h"
14 #import "TZImagePickerController.h" 14 #import "TZImagePickerController.h"
15 #import "TZPhotoPreviewController.h" 15 #import "TZPhotoPreviewController.h"
16 -#import "CNAudioOrVideoMananger.h"  
17 - 16 +#pragma mark - TODO: 2019.11.12 需要其他库依赖
  17 +//#import "CNAudioOrVideoMananger.h"
  18 +//#import "CNLiveSoundManager.h"
  19 +////////////////////////////
18 @interface TZVideoPlayerController () { 20 @interface TZVideoPlayerController () {
19 AVPlayer *_player; 21 AVPlayer *_player;
20 AVPlayerLayer *_playerLayer; 22 AVPlayerLayer *_playerLayer;
@@ -49,13 +51,17 @@ @@ -49,13 +51,17 @@
49 } 51 }
50 [self configMoviePlayer]; 52 [self configMoviePlayer];
51 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(pausePlayerAndShowNaviBar) name:UIApplicationWillResignActiveNotification object:nil]; 53 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(pausePlayerAndShowNaviBar) name:UIApplicationWillResignActiveNotification object:nil];
52 - [[NSNotificationCenter defaultCenter] addObserver:self  
53 - selector:@selector(pauseVideoView:) name:CNVideoOrAudioEnterNotification  
54 - object:nil]; 54 + #pragma mark - TODO: 2019.11.12 需要其他库依赖
  55 +// [[NSNotificationCenter defaultCenter] addObserver:self
  56 +// selector:@selector(pauseVideoView:) name:CNVideoOrAudioEnterNotification
  57 +// object:nil];
  58 +//
  59 +// [[NSNotificationCenter defaultCenter] addObserver:self
  60 +// selector:@selector(playVideoView:) name:CNVideoOrAudioOutNotification
  61 +// object:nil];
  62 + /////////////////////////////
55 63
56 - [[NSNotificationCenter defaultCenter] addObserver:self  
57 - selector:@selector(playVideoView:) name:CNVideoOrAudioOutNotification  
58 - object:nil]; 64 +// [self videoOrAudioEnterOrOut];
59 } 65 }
60 #pragma mark - 添加: 导航栏(LXG) 66 #pragma mark - 添加: 导航栏(LXG)
61 - (void)viewWillAppear:(BOOL)animated { 67 - (void)viewWillAppear:(BOOL)animated {
@@ -193,14 +199,16 @@ @@ -193,14 +199,16 @@
193 //完成按钮 199 //完成按钮
194 _doneButton.titleLabel.font = [UIFont systemFontOfSize:13]; 200 _doneButton.titleLabel.font = [UIFont systemFontOfSize:13];
195 [_doneButton setTitle:@"完成" forState:UIControlStateDisabled]; 201 [_doneButton setTitle:@"完成" forState:UIControlStateDisabled];
196 - [_doneButton setTitleColor:RGBOF(0xFFFFFF) forState:UIControlStateDisabled];  
197 - [_doneButton setTitleColor:RGBOF(0xFFFFFF) forState:UIControlStateNormal];  
198 -  
199 - //颜色绘制成图片  
200 - UIImage *dis_image = [UIImage qmui_imageWithColor:RGBAOF(0x0BBE06, 0.5)];  
201 - [_doneButton setBackgroundImage:dis_image forState:UIControlStateSelected];  
202 - UIImage *nor_image = [UIImage qmui_imageWithColor:RGBOF(0x0BBE06)];  
203 - [_doneButton setBackgroundImage:nor_image forState:UIControlStateNormal]; 202 + #pragma mark - TODO: 2019.11.12 需要其他库依赖
  203 +// [_doneButton setTitleColor:RGBOF(0xFFFFFF) forState:UIControlStateDisabled];
  204 +// [_doneButton setTitleColor:RGBOF(0xFFFFFF) forState:UIControlStateNormal];
  205 +
  206 +// //颜色绘制成图片
  207 +// UIImage *dis_image = [UIImage qmui_imageWithColor:RGBAOF(0x0BBE06, 0.5)];
  208 +// [_doneButton setBackgroundImage:dis_image forState:UIControlStateSelected];
  209 +// UIImage *nor_image = [UIImage qmui_imageWithColor:RGBOF(0x0BBE06)];
  210 +// [_doneButton setBackgroundImage:nor_image forState:UIControlStateNormal];
  211 + /////////////////////////
204 _doneButton.layer.masksToBounds = YES; 212 _doneButton.layer.masksToBounds = YES;
205 _doneButton.layer.cornerRadius = 5; 213 _doneButton.layer.cornerRadius = 5;
206 CGRect frame = _toolBar.frame; 214 CGRect frame = _toolBar.frame;
@@ -222,11 +230,16 @@ @@ -222,11 +230,16 @@
222 230
223 - (void)playButtonClick { 231 - (void)playButtonClick {
224 232
225 - if ([CNAudioOrVideoMananger IsEnter]) {//在房间  
226 - [QMUITips showWithText:@"音视频通话中..." inView:AppKeyWindow hideAfterDelay:1.5];  
227 - return;  
228 - }  
229 - 233 +// if ([CNAudioOrVideoMananger IsEnter]) {//在房间
  234 +// [QMUITips showWithText:@"音视频通话中..." inView:AppKeyWindow hideAfterDelay:1.5];
  235 +// return;
  236 +// }
  237 + #pragma mark - TODO: 2019.11.12 需要其他库依赖
  238 +// if ([[CNLiveSoundManager sharedInstance]isEnterChatAudio]) {
  239 +// [QMUITips showWithText:@"音视频通话中..." inView:AppKeyWindow hideAfterDelay:1.5];
  240 +// return;
  241 +// }
  242 + //////////////////////
230 CMTime currentTime = _player.currentItem.currentTime; 243 CMTime currentTime = _player.currentItem.currentTime;
231 CMTime durationTime = _player.currentItem.duration; 244 CMTime durationTime = _player.currentItem.duration;
232 if (_player.rate == 0.0f) { 245 if (_player.rate == 0.0f) {
@@ -306,7 +319,7 @@ @@ -306,7 +319,7 @@
306 // [UIApplication sharedApplication].statusBarHidden = NO; 319 // [UIApplication sharedApplication].statusBarHidden = NO;
307 // } 320 // }
308 } 321 }
309 - 322 +#pragma mark 收到进入音视频的通知
310 - (void)pauseVideoView:(NSNotification *)note 323 - (void)pauseVideoView:(NSNotification *)note
311 { 324 {
312 [self playButtonClick]; 325 [self playButtonClick];
@@ -314,11 +327,21 @@ @@ -314,11 +327,21 @@
314 327
315 - (void)playVideoView:(NSNotification *)note 328 - (void)playVideoView:(NSNotification *)note
316 { 329 {
317 -  
318 -  
319 -}  
320 330
321 331
  332 +}
  333 +#pragma mark 收到进入音视频的通知
  334 +//- (void)videoOrAudioEnterOrOut {
  335 +// __weak typeof(self) weakSelf = self;
  336 +// [CNLiveSoundManager sharedInstance].enterOrExitAudioBlock = ^(CNLiveAudioType type) {
  337 +// if (type == CNLiveAudioTypeEnter) { //进入音视频
  338 +// [weakSelf playButtonClick];
  339 +// }else if (type == CNLiveAudioTypeOut){ //退出音视频
  340 +//
  341 +// }
  342 +// };
  343 +//}
  344 +
322 - (void)dealloc { 345 - (void)dealloc {
323 [[NSNotificationCenter defaultCenter] removeObserver:self]; 346 [[NSNotificationCenter defaultCenter] removeObserver:self];
324 } 347 }
Example/CNLiveImagePickerController.xcodeproj/project.pbxproj
@@ -37,7 +37,7 @@ @@ -37,7 +37,7 @@
37 /* End PBXContainerItemProxy section */ 37 /* End PBXContainerItemProxy section */
38 38
39 /* Begin PBXFileReference section */ 39 /* Begin PBXFileReference section */
40 - 1E186CDE862673840D64652F /* CNLiveImagePickerController.podspec */ = {isa = PBXFileReference; includeInIndex = 1; name = CNLiveImagePickerController.podspec; path = ../CNLiveImagePickerController.podspec; sourceTree = "<group>"; }; 40 + 1E186CDE862673840D64652F /* CNLiveImagePickerController.podspec */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = CNLiveImagePickerController.podspec; path = ../CNLiveImagePickerController.podspec; sourceTree = "<group>"; xcLanguageSpecificationIdentifier = xcode.lang.ruby; };
41 251D01DF472ED3B34CCF79D7 /* Pods-CNLiveImagePickerController_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CNLiveImagePickerController_Tests.release.xcconfig"; path = "Target Support Files/Pods-CNLiveImagePickerController_Tests/Pods-CNLiveImagePickerController_Tests.release.xcconfig"; sourceTree = "<group>"; }; 41 251D01DF472ED3B34CCF79D7 /* Pods-CNLiveImagePickerController_Tests.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CNLiveImagePickerController_Tests.release.xcconfig"; path = "Target Support Files/Pods-CNLiveImagePickerController_Tests/Pods-CNLiveImagePickerController_Tests.release.xcconfig"; sourceTree = "<group>"; };
42 2EFBCF51E613A31E4CA39B49 /* Pods-CNLiveImagePickerController_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CNLiveImagePickerController_Example.debug.xcconfig"; path = "Target Support Files/Pods-CNLiveImagePickerController_Example/Pods-CNLiveImagePickerController_Example.debug.xcconfig"; sourceTree = "<group>"; }; 42 2EFBCF51E613A31E4CA39B49 /* Pods-CNLiveImagePickerController_Example.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CNLiveImagePickerController_Example.debug.xcconfig"; path = "Target Support Files/Pods-CNLiveImagePickerController_Example/Pods-CNLiveImagePickerController_Example.debug.xcconfig"; sourceTree = "<group>"; };
43 6003F58A195388D20070C39A /* CNLiveImagePickerController_Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CNLiveImagePickerController_Example.app; sourceTree = BUILT_PRODUCTS_DIR; }; 43 6003F58A195388D20070C39A /* CNLiveImagePickerController_Example.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = CNLiveImagePickerController_Example.app; sourceTree = BUILT_PRODUCTS_DIR; };
@@ -61,9 +61,9 @@ @@ -61,9 +61,9 @@
61 606FC2411953D9B200FFA9A0 /* Tests-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Tests-Prefix.pch"; sourceTree = "<group>"; }; 61 606FC2411953D9B200FFA9A0 /* Tests-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Tests-Prefix.pch"; sourceTree = "<group>"; };
62 6774261442B1D13201144A37 /* Pods_CNLiveImagePickerController_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_CNLiveImagePickerController_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 62 6774261442B1D13201144A37 /* Pods_CNLiveImagePickerController_Tests.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_CNLiveImagePickerController_Tests.framework; sourceTree = BUILT_PRODUCTS_DIR; };
63 71719F9E1E33DC2100824A3D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; }; 63 71719F9E1E33DC2100824A3D /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
64 - 804602CE4E7E104F5222073B /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; name = README.md; path = ../README.md; sourceTree = "<group>"; }; 64 + 804602CE4E7E104F5222073B /* README.md */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = net.daringfireball.markdown; name = README.md; path = ../README.md; sourceTree = "<group>"; };
65 873B8AEA1B1F5CCA007FD442 /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = Main.storyboard; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; }; 65 873B8AEA1B1F5CCA007FD442 /* Main.storyboard */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.storyboard; name = Main.storyboard; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
66 - BF0D4829B7327822E0C4146E /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; name = LICENSE; path = ../LICENSE; sourceTree = "<group>"; }; 66 + BF0D4829B7327822E0C4146E /* LICENSE */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; name = LICENSE; path = ../LICENSE; sourceTree = "<group>"; };
67 C188B280A1A26E9C6D19D5C6 /* Pods-CNLiveImagePickerController_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CNLiveImagePickerController_Example.release.xcconfig"; path = "Target Support Files/Pods-CNLiveImagePickerController_Example/Pods-CNLiveImagePickerController_Example.release.xcconfig"; sourceTree = "<group>"; }; 67 C188B280A1A26E9C6D19D5C6 /* Pods-CNLiveImagePickerController_Example.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CNLiveImagePickerController_Example.release.xcconfig"; path = "Target Support Files/Pods-CNLiveImagePickerController_Example/Pods-CNLiveImagePickerController_Example.release.xcconfig"; sourceTree = "<group>"; };
68 E4BA720C67B8EEEF52848A79 /* Pods_CNLiveImagePickerController_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_CNLiveImagePickerController_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 68 E4BA720C67B8EEEF52848A79 /* Pods_CNLiveImagePickerController_Example.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = Pods_CNLiveImagePickerController_Example.framework; sourceTree = BUILT_PRODUCTS_DIR; };
69 F2CA825BC87A414FD6AF3A37 /* Pods-CNLiveImagePickerController_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CNLiveImagePickerController_Tests.debug.xcconfig"; path = "Target Support Files/Pods-CNLiveImagePickerController_Tests/Pods-CNLiveImagePickerController_Tests.debug.xcconfig"; sourceTree = "<group>"; }; 69 F2CA825BC87A414FD6AF3A37 /* Pods-CNLiveImagePickerController_Tests.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CNLiveImagePickerController_Tests.debug.xcconfig"; path = "Target Support Files/Pods-CNLiveImagePickerController_Tests/Pods-CNLiveImagePickerController_Tests.debug.xcconfig"; sourceTree = "<group>"; };
@@ -193,7 +193,6 @@ @@ -193,7 +193,6 @@
193 F2CA825BC87A414FD6AF3A37 /* Pods-CNLiveImagePickerController_Tests.debug.xcconfig */, 193 F2CA825BC87A414FD6AF3A37 /* Pods-CNLiveImagePickerController_Tests.debug.xcconfig */,
194 251D01DF472ED3B34CCF79D7 /* Pods-CNLiveImagePickerController_Tests.release.xcconfig */, 194 251D01DF472ED3B34CCF79D7 /* Pods-CNLiveImagePickerController_Tests.release.xcconfig */,
195 ); 195 );
196 - name = Pods;  
197 path = Pods; 196 path = Pods;
198 sourceTree = "<group>"; 197 sourceTree = "<group>";
199 }; 198 };
@@ -248,6 +247,9 @@ @@ -248,6 +247,9 @@
248 LastUpgradeCheck = 0720; 247 LastUpgradeCheck = 0720;
249 ORGANIZATIONNAME = jyyjkt; 248 ORGANIZATIONNAME = jyyjkt;
250 TargetAttributes = { 249 TargetAttributes = {
  250 + 6003F589195388D20070C39A = {
  251 + DevelopmentTeam = 94X49GG3ZW;
  252 + };
251 6003F5AD195388D20070C39A = { 253 6003F5AD195388D20070C39A = {
252 TestTargetID = 6003F589195388D20070C39A; 254 TestTargetID = 6003F589195388D20070C39A;
253 }; 255 };
@@ -258,6 +260,7 @@ @@ -258,6 +260,7 @@
258 developmentRegion = English; 260 developmentRegion = English;
259 hasScannedForEncodings = 0; 261 hasScannedForEncodings = 0;
260 knownRegions = ( 262 knownRegions = (
  263 + English,
261 en, 264 en,
262 Base, 265 Base,
263 ); 266 );
@@ -494,6 +497,7 @@ @@ -494,6 +497,7 @@
494 baseConfigurationReference = 2EFBCF51E613A31E4CA39B49 /* Pods-CNLiveImagePickerController_Example.debug.xcconfig */; 497 baseConfigurationReference = 2EFBCF51E613A31E4CA39B49 /* Pods-CNLiveImagePickerController_Example.debug.xcconfig */;
495 buildSettings = { 498 buildSettings = {
496 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 499 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
  500 + DEVELOPMENT_TEAM = 94X49GG3ZW;
497 GCC_PRECOMPILE_PREFIX_HEADER = YES; 501 GCC_PRECOMPILE_PREFIX_HEADER = YES;
498 GCC_PREFIX_HEADER = "CNLiveImagePickerController/CNLiveImagePickerController-Prefix.pch"; 502 GCC_PREFIX_HEADER = "CNLiveImagePickerController/CNLiveImagePickerController-Prefix.pch";
499 INFOPLIST_FILE = "CNLiveImagePickerController/CNLiveImagePickerController-Info.plist"; 503 INFOPLIST_FILE = "CNLiveImagePickerController/CNLiveImagePickerController-Info.plist";
@@ -510,6 +514,7 @@ @@ -510,6 +514,7 @@
510 baseConfigurationReference = C188B280A1A26E9C6D19D5C6 /* Pods-CNLiveImagePickerController_Example.release.xcconfig */; 514 baseConfigurationReference = C188B280A1A26E9C6D19D5C6 /* Pods-CNLiveImagePickerController_Example.release.xcconfig */;
511 buildSettings = { 515 buildSettings = {
512 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; 516 ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
  517 + DEVELOPMENT_TEAM = 94X49GG3ZW;
513 GCC_PRECOMPILE_PREFIX_HEADER = YES; 518 GCC_PRECOMPILE_PREFIX_HEADER = YES;
514 GCC_PREFIX_HEADER = "CNLiveImagePickerController/CNLiveImagePickerController-Prefix.pch"; 519 GCC_PREFIX_HEADER = "CNLiveImagePickerController/CNLiveImagePickerController-Prefix.pch";
515 INFOPLIST_FILE = "CNLiveImagePickerController/CNLiveImagePickerController-Info.plist"; 520 INFOPLIST_FILE = "CNLiveImagePickerController/CNLiveImagePickerController-Info.plist";
Example/Podfile
1 use_frameworks! 1 use_frameworks!
  2 +source 'https://github.com/CocoaPods/Specs.git'
  3 +source 'http://bj.gitlab.cnlive.com/ios-team/CNLiveRepos.git'
2 4
3 platform :ios, '8.0' 5 platform :ios, '8.0'
4 6
5 target 'CNLiveImagePickerController_Example' do 7 target 'CNLiveImagePickerController_Example' do
6 pod 'CNLiveImagePickerController', :path => '../' 8 pod 'CNLiveImagePickerController', :path => '../'
  9 +
  10 + #pod 'CNLiveBaseKit'
7 11
8 target 'CNLiveImagePickerController_Tests' do 12 target 'CNLiveImagePickerController_Tests' do
9 inherit! :search_paths 13 inherit! :search_paths