// // YOUPAILZDiscoverVC.m // VQU // // Created by CY on 2021/7/1. // Copyright © 2021 leo. All rights reserved. // #import "YOUPAILZDiscoverVC.h" #import "JXCategoryView.h" #import "JXCategoryListContainerView.h" #import "YOUPAILZDynamicVC.h" #import "YOUPAIZYShortVideoVC.h" #import "YOUPAILCSendImageDynamicVC.h" #import "YOUPAIZYSendVideoVC.h" #import "QQPopMenuView.h" #import "YOUPAIZYSendVideoByLocalVC.h" #import "YOUPAIVideoEditVC.h"//裁剪编辑页面 #import "YOUPAISHMediaManager.h"//直接裁剪类 #import "YOUPAIZYSendVideoByLinkVC.h" #import "YOUPAILCBaseDynamicVC.h" #import "YOUPAILZCheckDynamicTypeWindow.h" #import "UIViewController+TFPresent.h" #define LZCategoryViewHeight 54.0f #define LZCategoryViewItemWidth 64.0f @interface YOUPAILZDiscoverVC () @property (nonatomic, weak) JXCategoryListContainerView *youpaippagerView; @property (nonatomic, weak) JXCategoryTitleView *youpaipcategoryView; @property (nonatomic, weak) UIView *youpaipcategoryBgV; @property (strong, nonatomic) UIButton *dynamicMsgButn; @end @implementation YOUPAILZDiscoverVC //- (UIStatusBarStyle)preferredStatusBarStyle{ // return UIStatusBarStyleLightContent; //} - (void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; [self.navigationController setNavigationBarHidden:YES animated:animated]; [UMengRecordTool umengEnterViewWithName:NSStringFromClass(self.class)]; } - (void)viewWillDisappear:(BOOL)animated{ [super viewWillDisappear:animated]; [self.navigationController setNavigationBarHidden:NO animated:animated]; [UMengRecordTool umengOutViewWithName:NSStringFromClass(self.class)]; } - (void)viewDidLoad { [super viewDidLoad]; // NSLog(@"%@",LCStr(word7)); [self youpaifinitUI]; } - (void)youpaifinitUI{ UIView *categoryBgV = [[UIView alloc] init];//WithFrame:CGRectMake(0.0f, 0.0f, KScreenWidth, LZCategoryViewHeight + StatusBarHeight) categoryBgV.backgroundColor = [UIColor whiteColor];//LCBkgColor; // UIImageView *topBgImgv = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"ym_messages_top_bg"]]; // topBgImgv.frame = CGRectMake(0, 0, kScreenWidth, StatusBarHeight + LZCategoryViewHeight); // [self.view addSubview:topBgImgv]; JXCategoryTitleView *categoryView = [[JXCategoryTitleView alloc] init]; //WithFrame:CGRectMake(0.0f, StatusBarHeight, KScreenWidth - 16 * 2.0f - 24, LZCategoryViewHeight) categoryView.backgroundColor = [UIColor clearColor]; categoryView.titles = self.titles; categoryView.delegate = self; categoryView.titleSelectedColor = LZ273145Color; categoryView.titleColor = LZA3AABEColor; categoryView.titleColorGradientEnabled = YES; categoryView.titleFont = LCFont(17.0f); categoryView.titleSelectedFont = LCBoldFont(22.0f); // categoryView.cellWidth = LZCategoryViewItemWidth; // categoryView.cellSpacing = 20.0f; categoryView.cellWidth = adapt(53); categoryView.cellSpacing = 0; categoryView.averageCellSpacingEnabled = NO; [categoryBgV addSubview:categoryView]; self.youpaipcategoryView = categoryView; // UIButton *dynamicMsgButn = [[UIButton alloc] initWithFrame:CGRectMake(KScreenWidth - 16 - 48,(LZCategoryViewHeight - 44) / 2.0f + StatusBarHeight,48,50)]; // [dynamicMsgButn setImage:[UIImage imageNamed:@"ym_messages_more_icon"] forState:(UIControlStateNormal)]; // [dynamicMsgButn addTarget:self action:@selector(youpaiDynamicMsgButnClick:) forControlEvents:(UIControlEventTouchUpInside)]; // [categoryBgV addSubview:dynamicMsgButn]; // UIButton* sendDynamicBtn = [[UIButton alloc]init]; //WithFrame:CGRectMake(KScreenWidth - 16 - 24,(LZCategoryViewHeight - 44) / 2.0f + StatusBarHeight,24,44) // [sendDynamicBtn setImage:[UIImage imageNamed:@"vqu_images_D_discover_send"] forState:(UIControlStateNormal)]; // [sendDynamicBtn addTarget:self action:@selector(youpaifsendDynamicClick:) forControlEvents:(UIControlEventTouchUpInside)]; // [categoryBgV addSubview:sendDynamicBtn]; // JXCategoryIndicatorLineView *lineView = [[JXCategoryIndicatorLineView alloc] init]; // lineView.verticalMargin = 10.0f; // lineView.indicatorHeight = 3.0f; // lineView.indicatorWidth = 10.0f; // lineView.indicatorColor = LZ7C69FEColor; // categoryView.indicators = @[lineView]; JXCategoryIndicatorImageView *indicatorImageView = [[JXCategoryIndicatorImageView alloc] init]; //indicatorImageView.indicatorImageView.image = [UIImage imageNamed:@"home_indicator_img"]; indicatorImageView.indicatorImageViewSize = CGSizeMake(adapt(68), LZCategoryViewHeight + adapt(5)); UIImageView *indicatorImgv = [[UIImageView alloc] init]; indicatorImgv.image = [UIImage imageNamed:@"home_indicator_img"]; indicatorImgv.contentMode = UIViewContentModeScaleAspectFit; [indicatorImageView addSubview:indicatorImgv]; [indicatorImgv mas_makeConstraints:^(MASConstraintMaker *make) { make.centerX.equalTo(indicatorImageView); make.centerY.equalTo(indicatorImageView).offset(5); make.width.mas_equalTo(adapt(68)); make.height.mas_equalTo(adapt(38)); }]; categoryView.indicators = @[indicatorImageView]; JXCategoryListContainerView *pagerView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_CollectionView delegate:self]; pagerView.listCellBackgroundColor = [UIColor clearColor]; // pagerView.frame = CGRectMake(0.0f, categoryBgV.mj_h, KScreenWidth, KScreenHeight - categoryBgV.mj_h - TabbarHeight); [self.view addSubview:pagerView]; self.youpaippagerView = pagerView; self.youpaipcategoryView.listContainer = self.youpaippagerView; pagerView.backgroundColor = [UIColor clearColor]; pagerView.scrollView.backgroundColor = [UIColor clearColor]; [self.view addSubview:categoryBgV]; self.youpaipcategoryBgV = categoryBgV; [categoryBgV mas_makeConstraints:^(MASConstraintMaker *make) { make.left.top.right.offset(0.0f); make.height.offset(LZCategoryViewHeight + StatusBarHeight); }]; // [sendDynamicBtn mas_makeConstraints:^(MASConstraintMaker *make) { // make.right.offset(-16.0f); // make.top.offset(StatusBarHeight + (LZCategoryViewHeight - 44) / 2.0f); // make.size.mas_offset(CGSizeMake(24.0f, 44.0f)); // }]; [categoryView mas_makeConstraints:^(MASConstraintMaker *make) { make.centerX.equalTo(categoryBgV); make.top.offset(StatusBarHeight); make.height.offset(LZCategoryViewHeight); make.width.mas_equalTo(adapt(112)); // make.right.equalTo(sendDynamicBtn.mas_left).offset(-16.0f); }]; [pagerView mas_makeConstraints:^(MASConstraintMaker *make) { make.right.left.offset(0.0f); make.top.equalTo(categoryBgV.mas_bottom).offset(0.0f); make.bottom.offset(-TabbarHeight); }]; UIButton *sendDynamicBtn = [UIButton buttonWithType:UIButtonTypeCustom]; [sendDynamicBtn setBackgroundImage:[UIImage imageNamed:@"vqu_images_dynamic_send"] forState:UIControlStateNormal]; [sendDynamicBtn addTarget:self action:@selector(youpaifsendDynamicClick:) forControlEvents:UIControlEventTouchUpInside]; [self.view addSubview:sendDynamicBtn]; [sendDynamicBtn mas_makeConstraints:^(MASConstraintMaker *make) { make.bottom.offset(-TabbarHeight-24.0f); make.right.offset(-12.0f); make.size.mas_offset(CGSizeMake(68.0f, 68.0f)); }]; } #pragma mark - JXCategoryListContainerViewDelegate - (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView{ return self.titles.count; } - (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index{ YOUPAILCBaseDynamicVC *dynamicVC = [[YOUPAILCBaseDynamicVC alloc] init]; dynamicVC.view.backgroundColor = [UIColor whiteColor]; dynamicVC.tableView.backgroundColor = [UIColor whiteColor]; dynamicVC.youpaiptype = [self.types[index] integerValue]; return dynamicVC; } //- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index{ // if (index == 0) { // return [self dynamicVC]; // }else{ // return [self shortVideoVC]; // } //} //- (void)listContainerViewDidScroll:(UIScrollView *)scrollView{ // CGFloat x = scrollView.contentOffset.x; // CGFloat scale = x / KScreenWidth; // self.categoryBgV.backgroundColor = [LCBkgColor colorWithAlphaComponent:1.0f - scale]; //} - (void)youpaiDynamicMsgButnClick:(UIButton*)sender { } - (void)youpaifsendDynamicClick:(UIButton*)sender{ if (![LCTools isRealNameAuthentication]) { return; } YOUPAILZCheckDynamicTypeWindow *window = [[YOUPAILZCheckDynamicTypeWindow alloc] init]; window.isTouchDismiss = YES; @weakify(self); [window setSelectedSendDynamicTypeBlock:^(LZSendDynamicType type) { @strongify(self); if (type == LZSendDynamicTypeWithImage) { if ([LCSaveModel getSendDynamicModel]) { YOUPAILCSendImageDynamicVC* sendDynamic = [[YOUPAILCSendImageDynamicVC alloc]init]; YOUPAILCSendDynamicModel* sendModel = [LCSaveModel getSendDynamicModel]; sendDynamic.youpaipsendModel = sendModel; [self pushEffectPresentToVC:sendDynamic]; }else{ [self youpaifopenAlbum]; } }else{ // [ZCHUDHelper showTitle:@"敬请期待~"]; //暂时注释 [self youpaifopenVideos]; } }]; [self TFPresentVC:window completion:nil]; // if (self.youpaipcategoryView.selectedIndex == 0) {//动态 // // // [QQPopMenuView showWithItems:@[@{@"title":@"发布视频",@"imageName":@""}, // @{@"title":@"发布图片",@"imageName":@""}, // ] // width:74 // triangleLocation:CGPointMake([UIScreen mainScreen].bounds.size.width-30, NavBarHeight+5) // action:^(NSInteger index) { // // NSLog(@"点击了第%ld行",index); // if (index == 0) { // [self youpaifopenVideos]; // }else{ // if ([LCSaveModel getSendDynamicModel]) { // YOUPAILCSendImageDynamicVC* sendDynamic = [[YOUPAILCSendImageDynamicVC alloc]init]; // YOUPAILCSendDynamicModel* sendModel = [LCSaveModel getSendDynamicModel]; // sendDynamic.youpaipsendModel = sendModel; // [self pushEffectPresentToVC:sendDynamic]; // }else{ // [self youpaifopenAlbum]; // } // } // // }]; // // // // // // }else{//短视频 // // //// [QQPopMenuView showWithItems:@[@{@"title":@"链接上传",@"imageName":@""}, //// @{@"title":@"本地上传",@"imageName":@""}, //// ] //// width:74 //// triangleLocation:CGPointMake([UIScreen mainScreen].bounds.size.width-30, NavBarHeight+5) //// action:^(NSInteger index) { //// //// NSLog(@"点击了第%ld行",index); //// if (index == 0) { //// YOUPAIZYSendVideoByLinkVC *vc = [[YOUPAIZYSendVideoByLinkVC alloc] init]; //// [self pushEffectPresentToVC:vc]; //// }else{ // [self youpaifshortVideoyoupaifopenAlbum]; //// } //// //// }]; // // //// YOUPAIZYSendVideoVC *vc = [[YOUPAIZYSendVideoVC alloc] init]; //// [self.navigationController pushViewController:vc animated:YES]; // // } } //上传本地视频 - (void)youpaifshortVideoyoupaifopenAlbum{ TZImagePickerController *imagePickerVc = [[TZImagePickerController alloc] initWithMaxImagesCount:9 columnNumber:4 delegate:nil]; [LCTZImageConfigHelper setDefaultTZImageConfig:imagePickerVc]; imagePickerVc.allowTakePicture = YES; // 在内部显示拍照按钮 imagePickerVc.allowPickingVideo = YES;//是否允许选择视频 imagePickerVc.allowPickingImage = NO;//是否允许选择照片 imagePickerVc.allowPickingOriginalPhoto = NO;//是否选择原图 imagePickerVc.showSelectedIndex = YES; //显示图片序号 // 4. 照片排列按修改时间升序 imagePickerVc.sortAscendingByModificationDate = YES;//按时间倒序排列图片 // 你可以通过block或者代理,来得到用户选择的照片. [imagePickerVc setDidFinishPickingVideoHandle:^(UIImage *coverImage, PHAsset *asset) { PHVideoRequestOptions *options = [[PHVideoRequestOptions alloc] init]; options.version = PHVideoRequestOptionsVersionOriginal; options.deliveryMode = PHVideoRequestOptionsDeliveryModeAutomatic; options.networkAccessAllowed = YES; [[PHImageManager defaultManager] requestAVAssetForVideo:asset options:nil resultHandler:^(AVAsset * _Nullable asset, AVAudioMix * _Nullable audioMix, NSDictionary * _Nullable info) { AVURLAsset *urlAsser = ( AVURLAsset *)asset; NSString *videoPath =[urlAsser.URL absoluteString]; NSLog(@"%@",videoPath); NSLog(@"%@",info); CMTime time = [asset duration]; int seconds = ceil(time.value/time.timescale); NSLog(@"视频时长seconds = %d",seconds); dispatch_sync(dispatch_get_main_queue(), ^{ if (seconds > 60) { //视频时长大于60s将自动裁剪前60秒进行上传 [self youpaifisCutVideo:videoPath andImage:coverImage];//是否裁剪视频进行上传 }else{ //裁剪 // YOUPAIVideoEditVC *videoEditVC = [[YOUPAIVideoEditVC alloc] init]; // videoEditVC.videoUrl = [NSURL URLWithString:videoPath]; // [self.navigationController pushViewController:videoEditVC animated:YES]; YOUPAIZYSendVideoByLocalVC *vc = [[YOUPAIZYSendVideoByLocalVC alloc] init]; vc.youpaipcoverImage = coverImage; vc.youpaipvideoFileName = videoPath; [self pushEffectPresentToVC:vc]; } }); }]; }]; [self presentViewController:imagePickerVc animated:YES completion:nil]; } - (YOUPAILZDynamicVC *)dynamicVC{ return [[YOUPAILZDynamicVC alloc]init]; } - (YOUPAIZYShortVideoVC *)shortVideoVC{ return [[YOUPAIZYShortVideoVC alloc]init]; } //上传视频 -(void)youpaifopenVideos{ [[LCTools getCurrentVC] showVideoPickerWithStyleBlock:^(TZImagePickerController * _Nonnull imagePicker) { [LCTZImageConfigHelper setDefaultTZImageConfig:imagePicker]; imagePicker.allowTakePicture = YES; // 在内部显示拍照按钮 imagePicker.allowPickingVideo = YES;//是否允许选择视频 imagePicker.allowPickingImage = NO;//是否允许选择照片 imagePicker.allowPickingOriginalPhoto = NO;//是否选择原图 imagePicker.showSelectedIndex = YES; //显示图片序号 // 4. 照片排列按修改时间升序 imagePicker.sortAscendingByModificationDate = YES;//按时间倒序排列图片 } finishBlock:^(UIImage * _Nonnull coverImage, NSString * _Nonnull outputPath, NSString * _Nonnull errorMsg) { NSLog(@"asdds"); YOUPAIZYSendVideoByLocalVC *vc = [[YOUPAIZYSendVideoByLocalVC alloc] init]; vc.youpaipcoverImage = coverImage; vc.youpaipisDynamicVC = self.youpaipcategoryView.selectedIndex == 0; vc.youpaipvideoFileName = outputPath; [self pushEffectPresentToVC:vc]; }]; // TZImagePickerController *imagePickerVc = [[TZImagePickerController alloc] initWithMaxImagesCount:9 columnNumber:4 delegate:self]; // // // 你可以通过block或者代理,来得到用户选择的照片. // [imagePickerVc setDidFinishPickingAndEditingVideoHandle:^(UIImage *coverImage, NSString *outputPath, NSString *errorMsg) { // NSLog(@"asdasd"); // }]; // [imagePickerVc setDidFinishPickingVideoHandle:^(UIImage *coverImage, PHAsset *asset) { // // if (asset == nil) { // [ZCHUDHelper showTitle:@"无效视频"]; // return; // } //// dispatch_sync(dispatch_get_main_queue(), ^{ //// if (seconds > 60) { //// //视频时长大于60s将自动裁剪前60秒进行上传 //// [self youpaifisCutVideo:videoPath andImage:coverImage];//是否裁剪视频进行上传 //// }else{ // //裁剪 // // YOUPAIVideoEditVC *videoEditVC = [[YOUPAIVideoEditVC alloc] init]; // // videoEditVC.videoUrl = [NSURL URLWithString:videoPath]; // // [self.navigationController pushViewController:videoEditVC animated:YES]; // YOUPAIZYSendVideoByLocalVC *vc = [[YOUPAIZYSendVideoByLocalVC alloc] init]; // vc.youpaipcoverImage = coverImage; // vc.youpaipisDynamicVC = self.youpaipcategoryView.selectedIndex == 0; // vc.youpaipvideoFileName = @""; // [self pushEffectPresentToVC:vc]; //// } //// }); // // }]; // [self presentViewController:imagePicker animated:YES completion:nil]; } -(void)youpaifisCutVideo:(NSString *)videoPath andImage:(UIImage *)coverImage { NSLog(@"%@",videoPath); UIAlertController *alertController = [UIAlertController alertControllerWithTitle:nil message:@"视频时长大于60秒将自动裁剪前60秒进行上传" preferredStyle:UIAlertControllerStyleAlert]; UIAlertAction *cancelAction = [UIAlertAction actionWithTitle:@"取消上传" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action){ }]; UIAlertAction *okAction = [UIAlertAction actionWithTitle:@"确定上传" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action){ [ZCHUDHelper showWithStatus:@"正在裁剪..."]; NSURL *url = [NSURL URLWithString:videoPath]; NSLog(@"url == %@",url); [YOUPAISHMediaManager youpaifcropWithVideoUrlStr:url start:1.0 end:60.0 completion:^(NSURL *outputURL, Float64 videoDuration, BOOL isSuccess) { if (isSuccess) { NSLog(@"-转码完成------\n路径:%@",outputURL); dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ dispatch_async(dispatch_get_main_queue(), ^{ [ZCHUDHelper showTitle:@"裁剪完成"]; YOUPAIZYSendVideoByLocalVC *vc = [[YOUPAIZYSendVideoByLocalVC alloc] init]; vc.youpaipcoverImage = coverImage; vc.youpaipvideoFileName = [outputURL absoluteString]; vc.youpaipisDynamicVC = self.youpaipcategoryView.selectedIndex == 0; [self pushEffectPresentToVC:vc]; }); }); }else{ [ZCHUDHelper showTitle:@"裁剪失败"]; } }]; }]; [alertController addAction:cancelAction]; [alertController addAction:okAction]; [self presentViewController:alertController animated:YES completion:nil]; } - (void)youpaifopenAlbum{ TZImagePickerController *imagePickerVc = [[TZImagePickerController alloc] initWithMaxImagesCount:9 columnNumber:4 delegate:nil]; [LCTZImageConfigHelper setDefaultTZImageConfig:imagePickerVc]; imagePickerVc.allowTakePicture = YES; // 在内部显示拍照按钮 imagePickerVc.allowPickingVideo = NO;//是否允许选择视频 imagePickerVc.allowPickingImage = YES;//是否允许选择照片 imagePickerVc.allowPickingOriginalPhoto = YES;//是否选择原图 imagePickerVc.showSelectedIndex = YES; //显示图片序号 // 4. 照片排列按修改时间升序 imagePickerVc.sortAscendingByModificationDate = YES;//按时间倒序排列图片 // 你可以通过block或者代理,来得到用户选择的照片. [imagePickerVc setDidFinishPickingPhotosHandle:^(NSArray *photos, NSArray *assets, BOOL isSelectOriginalPhoto) { YOUPAILCSendImageDynamicVC* sendDynamic = [[YOUPAILCSendImageDynamicVC alloc]init]; YOUPAILCSendDynamicModel* sendModel = [[YOUPAILCSendDynamicModel alloc]init]; sendModel.youpaipimages = photos.mutableCopy; sendDynamic.youpaipsendModel = sendModel; [self pushEffectPresentToVC:sendDynamic]; }]; [imagePickerVc setDidFinishPickingGifImageHandle:^(UIImage *animatedImage, id sourceAssets) { YOUPAILCSendImageDynamicVC* sendDynamic = [[YOUPAILCSendImageDynamicVC alloc]init]; YOUPAILCSendDynamicModel* sendModel = [[YOUPAILCSendDynamicModel alloc]init]; sendModel.youpaipimages = [NSMutableArray arrayWithObject:animatedImage]; sendDynamic.youpaipsendModel = sendModel; [self pushEffectPresentToVC:sendDynamic]; }]; [self presentViewController:imagePickerVc animated:YES completion:nil]; } - (NSArray *)titles{ return @[@"推荐",@"关注"]; } - (NSArray *)types{ return @[@(1),@(2),@(0)]; } @end