每次启动画面在 iOS 应用程序中消失时启动视频

Posted

技术标签:

【中文标题】每次启动画面在 iOS 应用程序中消失时启动视频【英文标题】:launch video every time splash screen disappears in iOS app 【发布时间】:2015-04-28 11:39:50 【问题描述】:

我对这种行为有点困惑。

我想做的是, 我有两个不同的应用程序。 一个是我做的,另一个是一个离开公司的人做的,现在我必须完成他的项目。 但是两个项目要完成的任务是一样的。

我每次打开应用程序时都必须显示 5 秒的视频。 喜欢一些品牌视频。 (在愤怒的小鸟应用中完成)

我检查了 SO 上的所有链接,但没有帮助任何人。

我离开公司的前辈,他使用 Main.storyboard 来导航每个屏幕。 而且我不太擅长使用故事板。 在我的应用中,我以编程方式创建了导航。

当我的启动画面消失时, 我显示仪表板。 但是在显示仪表板之前,我必须每次都显示视频。 所以我所做的, 我只为名为@9​​87654321@ 的视频创建了一个视图控制器, 并从dashboardView 的ViewDidLoad 调用该视图控制器。 当我的视频完成后, 然后通过使用 NSNotificationCenter 我删除了VideoViewController

当我 Nslog url 路径时,它的打印正确,但之后我的应用程序崩溃了。 我通过应用 ExceptionalBreakpoints 检查了它,但没有帮助。

这是我在ViewDidLoad of VideoViewController 中启动视频的代码

NSURL *url = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"video" ofType:@"mp4"]];
    NSLog(@"video path :- %@",url);
    playercontroller = [[MPMoviePlayerController alloc] init];
    [playercontroller setContentURL:url];
    [playercontroller.view setFrame:CGRectMake (0, 0, 320, 460)];
    [self.view addSubview:playercontroller.view];
    [playercontroller play];

    [[NSNotificationCenter defaultCenter] addObserver:self
                                             selector:@selector(moviePlayBackDidFinish:)
                                                 name:MPMoviePlayerPlaybackDidFinishNotification
                                               object:playercontroller];

我正在从仪表板推送VideoViewController

-(void)viewDidAppear:(BOOL)animated

方法。

因为我做错了什么。 由于我的 url 得到了很好的 Nslg,所以毫无疑问加载视频。

请指导我。 还指导我使用情节提要完成相同的任务。

提前致谢。

【问题讨论】:

我想你想试试这样 [self presentMoviePlayerViewControllerAnimated:movieController];删除 [self.view addSubview:playercontroller.view];然后尝试 或者这样试试 [self presentViewController:playercontroller animated:YES completion:nil]; @Darshan 我尝试了同样的方法,但不起作用。然后我从 MPMoviePlayerViewController 切换到 MPMoviePlayerController。我创建了 MPMoviePlayerController 的对象,而不是 MPMoviePlayerViewController 如果我使用 MPMoviePlayerViewController 及以上代码行,则应用程序崩溃并给出以下警告。尝试在视图不在窗口层次结构中的 上呈现 【参考方案1】:

你不应该这样硬编码设置框架..

假设 'self' 是一个 ViewController(从 RootViewController 一直正确地添加ChildViewController),尝试下一个操作:

NSString *path = [[NSBundle mainBundle] pathForResource:videoFileName ofType:@"mp4"];
NSURL *url = [NSURL fileURLWithPath:path];
MPMoviePlayerViewController *videoController = [[MPMoviePlayerViewController alloc] initWithContentURL:url];
[self presentMoviePlayerViewControllerAnimated:videoController];
[videoController.moviePlayer play];

【讨论】:

:- 应用程序崩溃并给出警告“警告:尝试在 上显示 ,其视图不在窗口层次结构中!” 确保你 addChildViewController 所有的视图控制器从 rootVC 一直到这个 我将仪表板视图添加为根视图,加载仪表板后,我调用 VideoView 显示视频 那么,在添加这个 VideoViewController 时,请确保在 DashboardViewController 中执行 addChildViewController:videoViewController 当我做 addChildViewController:videoViewController 时,它什么也不做,只是冻结应用程序和控制台连续打印警告“[UIApplication beginIgnoringInteractionEvents]”

以上是关于每次启动画面在 iOS 应用程序中消失时启动视频的主要内容,如果未能解决你的问题,请参考以下文章

ios应用程序的视频启动画面

如何在 iOS 7 和 iOS 6 中出现动画启动画面期间隐藏状态栏?

在 ionic 3 或 4 上将启动画面作为视频?

在 iOS 中启动快捷操作时,有没有办法不打开启动画面/应用程序?

iOS App图标和启动画面尺寸

在 Unity 中,如何停止“显示 Unity 启动画面”的弹出窗口