美文网首页iOS进阶iOS开发技巧ios
iOS启动图实现视频动画

iOS启动图实现视频动画

作者: LeeIn | 来源:发表于2016-08-12 15:27 被阅读3032次

    前言

    因为产品需求以及后台都未完成,所以最近在公司也没什么工作要做,主要也就看看技术文章,写写东西。今天的这个东西是一个关于启动页或者引导页的视频动画效果的实现过程,原型也是我们产品给我看的一个APP。

    代码实现

    • 废话不多说,先上效果图
    完成效果图.gif
    • 接下来说下思路了

    说实话刚开始我有点彷徨的,因为我以前并没有做过,接下来我把那个APP的里的资源给拿到了,发现一个.mp4的视频,我就记起我以前看过的一篇文章iOS<咸鱼APP>新特性界面-视频动画,真是惭愧,借鉴了一下,然后就有了我的这篇文章。

    主要思路就是用一个控制器来作为播放视频的载体,然后在让这个控制器作为根视图,视频播放完成之后那就该干嘛干嘛了。
    感觉废话说的有点多啊,下面就放代码好了

    先新建一个控制器AnimationViewController在控制器中新建一个属性moviePlayer,记得要先引入系统库<MediaPlayer/MediaPlayer.h>

    @property (nonatomic, strong) MPMoviePlayerController *moviePlayer;
    

    设置moviePlayer我是在懒加载中直接设置的

    -(MPMoviePlayerController *)moviePlayer{
        if (!_moviePlayer) {
            _moviePlayer = [[MPMoviePlayerController alloc]init];
            [_moviePlayer.view setFrame:self.view.bounds];
            //设置自动播放
            [_moviePlayer setShouldAutoplay:NO];
            //设置源类型 因为新特性一般都是播放本地的小视频 所以设置源类型为file
            _moviePlayer.movieSourceType = MPMovieSourceTypeFile;
            //取消控制视图 如:播放暂停等
            _moviePlayer.controlStyle = MPMovieControlStyleNone;
            [self.view addSubview:_moviePlayer.view];
            //监听播放完成
            [[NSNotificationCenter defaultCenter]addObserver:self selector:@selector(playFinsihed) name:MPMoviePlayerPlaybackDidFinishNotification object:nil];
        }
        return _moviePlayer;
    }
    

    然后在.h中公开一个moviePath视频的路径,还有一个结束播放的blockplayFinished等下需要。

    AnimationViewController中也算差不多了,毕竟也没什么东西,接下来我们去AppDelegate中声明一个AnimationViewController属性

    - (AnimationViewController *)animationViewController{
        if (!_animationViewController) {
            _animationViewController = [[AnimationViewController alloc]init];
           //设置本地视频路径
            _animationViewController.moviePath = [[NSBundle mainBundle] pathForResource:@"V" ofType:@"mp4"];
            _animationViewController.playFinished = ^{
                UINavigationController *rootNav = [[UINavigationController alloc] initWithRootViewController:[[ViewController alloc] init]];
                [UIApplication sharedApplication].keyWindow.rootViewController = rootNav;
            };
        }
        return _animationViewController;
    }
    

    然后在AppDelegate的启动方法把这个控制器设为根视图

    - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
        self.window = [[UIWindow alloc]initWithFrame:[UIScreen mainScreen].bounds];
        self.window.rootViewController = self.animationViewController;
        [self.window makeKeyAndVisible];
        return YES;
    }
    

    小结

    基本算是完成了,惯例放上我的源码还有我的个人网站,有需要的可以去看一下,最后希望可以帮到大家。

    这里要说一句,刚开始我用这个路径但是一直为空,后来我添加了一个名字为Resource的文件夹把mp4放进去就好了,也不知道为什么。有知道也可以告诉我

    相关文章

      网友评论

      • 罗显友:如何再启动页做动画 你这个是在启动页加载完成之后再做动画的
      • 僞彡:MPMoviePlayerController 被弃用了
      • c2fffd2b0090:请问你适配了 ipone X
        了吗?
        c2fffd2b0090:@LeeIn 赶紧适配一波呗
        LeeIn:@打了鸡血 没有 好久的demo了
      • JackPanda8:专门注册了账号回复楼主,你的这个从启动图片到播放视频中间会有一个白色的屏幕闪烁。。。。。。
      • 向日葵De视界:haha ,请问下视频是自己合成的么?用的什么软件啊?
        LeeIn:@向日葵De视界 不是 在网上找的素材
      • 风吹柳絮如花落:可以使用AVPlayerViewController实现么? MB框架 9.0就过期了
        LeeIn:@Foundation 我没用过AV做过 等我有空试下 看看有没有解决方法
        风吹柳絮如花落:@Lee2Go 但是会有那个框啊,最近我也在研究这个
        LeeIn:@Foundation 只要是能播放应该就可以实现
      • Azzan:棒棒
        LeeIn:@蓝灵调 谢谢:smile::smile:

      本文标题:iOS启动图实现视频动画

      本文链接:https://www.haomeiwen.com/subject/goxesttx.html