|
@@ -0,0 +1,113 @@
|
|
|
+//
|
|
|
+// KSAccompanyDraftViewController.m
|
|
|
+// KulexiuForStudent
|
|
|
+//
|
|
|
+// Created by 王智 on 2024/7/18.
|
|
|
+//
|
|
|
+
|
|
|
+#import "KSAccompanyDraftViewController.h"
|
|
|
+#import "KSMediaMergeView.h"
|
|
|
+#import "AppDelegate+AppService.h"
|
|
|
+#import <KSToolLibrary/UIDevice+TFDevice.h>
|
|
|
+
|
|
|
+@interface KSAccompanyDraftViewController ()
|
|
|
+
|
|
|
+@property (nonatomic, copy) AccompanyMergeCallback callback;
|
|
|
+
|
|
|
+
|
|
|
+@end
|
|
|
+
|
|
|
+@implementation KSAccompanyDraftViewController
|
|
|
+
|
|
|
+- (void)viewDidLoad {
|
|
|
+ [super viewDidLoad];
|
|
|
+ // Do any additional setup after loading the view.
|
|
|
+ self.ks_prefersNavigationBarHidden = YES;
|
|
|
+}
|
|
|
+
|
|
|
+- (void)changeOrientation:(BOOL)isLandScape {
|
|
|
+ if (isLandScape) {
|
|
|
+ // 切换到横屏
|
|
|
+ if (IS_IPAD) {
|
|
|
+ self.zh_statusBarHidden = YES;
|
|
|
+ }
|
|
|
+ AppDelegate* delegate = (AppDelegate*)[UIApplication sharedApplication].delegate;
|
|
|
+ delegate.allowAutoRotate = YES;
|
|
|
+ [UIDevice switchNewOrientation:UIInterfaceOrientationLandscapeRight inController:self];
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ if (IS_IPAD) {
|
|
|
+ self.zh_statusBarHidden = NO;
|
|
|
+ }
|
|
|
+ AppDelegate* delegate = (AppDelegate*)[UIApplication sharedApplication].delegate;
|
|
|
+ delegate.allowAutoRotate = NO;
|
|
|
+ [UIDevice switchNewOrientation:UIInterfaceOrientationPortrait inController:self];
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+- (void)viewWillDisappear:(BOOL)animated {
|
|
|
+ BOOL isBack = [self isViewPopDismiss];
|
|
|
+ if (isBack) {
|
|
|
+ if (self.is_poppingToRoot) {
|
|
|
+ [self changeOrientation:NO];
|
|
|
+ [[UIApplication sharedApplication] setIdleTimerDisabled:NO];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ if ([self.presentedViewController isKindOfClass:NSClassFromString(@"TZImagePickerController")] || [self.presentedViewController isKindOfClass:NSClassFromString(@"RSKImageCropViewController")] || [self.presentedViewController isKindOfClass:NSClassFromString(@"KSVideoCropViewController")]) {
|
|
|
+ NSLog(@"-----");
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ KSBaseViewController *nextCtrl = [self getNextViewController];
|
|
|
+ if (nextCtrl) {
|
|
|
+ if (nextCtrl.ks_landScape != self.ks_landScape) {
|
|
|
+ [self changeOrientation:NO];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// 偏移时间 (录制声音和伴奏声音的偏移)offsetTime 收音延迟+ 播放延迟 ms
|
|
|
+- (void)configWithVideoUrl:(NSURL *)videoUrl bgAudioUrl:(NSURL *)bgAudioUrl remoteBgUrl:(NSString *)remoteBgUrl recordUrl:(NSURL *)recordUrl offsetTime:(NSInteger)offsetTime mergeCallback:(AccompanyMergeCallback)callback {
|
|
|
+ if (callback) {
|
|
|
+ self.callback = callback;
|
|
|
+ }
|
|
|
+ [self.scrollView removeFromSuperview];
|
|
|
+
|
|
|
+ KSMediaMergeView *mergeView = [[KSMediaMergeView alloc] init];
|
|
|
+ mergeView.coverImage = self.coverImage;
|
|
|
+ mergeView.songName = self.songName;
|
|
|
+ mergeView.recordId = self.recordId;
|
|
|
+ mergeView.desc = self.desc;
|
|
|
+ mergeView.musicSpeed = self.musicSpeed;
|
|
|
+ MJWeakSelf;
|
|
|
+ [mergeView configWithVideoUrl:videoUrl bgAudioUrl:bgAudioUrl remoteBgUrl:remoteBgUrl recordUrl:recordUrl offsetTime:offsetTime mergeCallback:^(BOOL isPublished) {
|
|
|
+ if (weakSelf.callback) {
|
|
|
+ weakSelf.callback(isPublished);
|
|
|
+ [weakSelf backAction];
|
|
|
+ }
|
|
|
+ }];
|
|
|
+ [self.view addSubview:mergeView];
|
|
|
+ [mergeView mas_makeConstraints:^(MASConstraintMaker *make) {
|
|
|
+ make.left.right.top.bottom.mas_equalTo(self.view);
|
|
|
+ }];
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+- (void)backAction {
|
|
|
+ [self.view endEditing:YES];
|
|
|
+ // 根据需要返回到不同页面
|
|
|
+ [self.navigationController popViewControllerAnimated:NO];
|
|
|
+}
|
|
|
+/*
|
|
|
+#pragma mark - Navigation
|
|
|
+
|
|
|
+// In a storyboard-based application, you will often want to do a little preparation before navigation
|
|
|
+- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender {
|
|
|
+ // Get the new view controller using [segue destinationViewController].
|
|
|
+ // Pass the selected object to the new view controller.
|
|
|
+}
|
|
|
+*/
|
|
|
+
|
|
|
+@end
|