Commit b2a0b938f6d610d7a9ffc5062137ce73a51d72f2
1 parent
5abd0c15
提交
Showing
13 changed files
with
524 additions
and
425 deletions
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 |