第五篇uber启动视频播放

久冬不雨 久冬不雨     2022-08-05     324

关键词:

import UIKit
import AVFoundation

class GuidePage: FxBasePage {

    @IBOutlet var backImageView:UIImageView?
    
    var player:AVPlayer!
    var playerItem:AVPlayerItem!
    var location:FxLocation!
    
    override init(nibName nibNameOrNil: String?, bundle nibBundleOrNil: NSBundle?)
    {
        super.init(nibName: nibNameOrNil, bundle: nibBundleOrNil)
    }
    
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
    
    convenience init ()
    {
        var nibNameOrNil = String?("GuidePage")
        
        //考虑到xib文件可能不存在或被删,故加入判断
        if NSBundle.mainBundle().pathForResource(nibNameOrNil, ofType: "nib") == nil {
            nibNameOrNil = nil
        }
        
        self.init(nibName: nibNameOrNil, bundle: nil)
    }
    
    override func viewDidLoad()
    {
        super.viewDidLoad()
        
        initPlayVideo()
        doAnimation()
    }
    
    override func didReceiveMemoryWarning()
    {
        super.didReceiveMemoryWarning()
    }

    func doAnimation()
    {
        var images:[UIImage]=[]
        var image:UIImage?
        var imageName:String?
        
        for var index=0; index<=67;index++ {
            imageName = "logo-" + String(format: "%03d", index)
            image = UIImage(named: imageName!)
            
            images.insert(image!, atIndex: index)
        }
        
        backImageView?.animationImages = images
        backImageView?.animationRepeatCount = 1
        backImageView?.animationDuration = 5
        
        backImageView?.startAnimating()
        
        UIView.animateWithDuration(0.7, delay:5, options: .CurveEaseOut, animations: {
                self.backView!.alpha = 1.0
                self.player?.play()
            }, completion: {
                finished in
                print("Animation End")
        })
    }
    
    func initPlayVideo ()
    {
        let path = NSBundle.mainBundle().pathForResource("welcome_video", ofType: "mp4")
        let url = NSURL.fileURLWithPath(path!)
        
        playerItem = AVPlayerItem(URL: url)
        player = AVPlayer(playerItem: playerItem)
        
        let playerLayer = AVPlayerLayer(player: player)
        
        playerLayer.frame = backView!.bounds
        playerLayer.videoGravity =  AVLayerVideoGravityResizeAspect
        
        backView!.layer.insertSublayer(playerLayer, atIndex: 0)
        backView!.alpha = 0.0
        
        NSNotificationCenter.defaultCenter().addObserver ( self,
            selector: "didFinishVideo:" ,
            name: AVPlayerItemDidPlayToEndTimeNotification ,
            object: playerItem)
    }
    
  // 播放到视频结尾之后,要重新开放播放 func didFinishVideo(sender: NSNotification ) { let item
= sender.object as! AVPlayerItem item.seekToTime(kCMTimeZero) self.player.play() }
  // 跳转登录 @IBAction func doLogin() { location
= FxLocation() location.startLocation() }
  // 跳转注册 @IBAction func doRegister() { let page
= CreateAccountPage() let navPage = UINavigationController(rootViewController: page) self.presentViewController(navPage, animated: true, completion: nil) } }

 

docker第五篇存储

镜像概述复习  Docker镜像由多个只读层叠加而成,启动容器时,Docker会加载只读镜像层并在镜像栈顶部添加一个读写层  如果运行中的容器修改了现有的一个已经存在的文件,那改文件将会从读写层下面的只读层复制到读写... 查看详情

第五篇:常用模块

第五篇:常用模块   PYTHON-模块time&datetime+目录规范PYTHON-模块-time&datetime-练习+目录规范PYTHON-模块sysosrandomshutilPYTHON-模块sysosrandomshutil-练习PYTHON-模块jsonpickleshelvexmlPYTHON-模块logginghashlibPY 查看详情

第五篇:springcloudeureka权限认证

参考技术AEureka注册中心的管理界面以及服务注册时,没有任何认证机制,如果这个地址有公网IP的话,必然能直接访问到,这样是不安全的,安全性比较差,如果其它服务恶意注册一个同名服务,但是实现不同,可能就有风险了... 查看详情

关于ajax第五篇

AJAX-服务器 响应如需获得来自服务器的响应,请使用XMLHttpRequest对象的responseText或responseXML属性。AJAX- onreadystatechange 事件当请求被发送到服务器时,我们需要执行一些基于响应的任务。每当readyState改变时,就会触发onr... 查看详情

spring第五篇

在Spring第四篇中我们主要介绍了setget的注入方式在Spring第五篇中我们主要介绍使用注解配置Spring主要分为两个步骤1导包的同时引入新得约束导包如下 1.1重写注解代理配置文件代码如下  <?xmlversion="1.0"encoding="UTF-8"?>... 查看详情

第五篇vggnet——论文翻译

文章目录摘要1引言2ConvNet配置2.1架构2.2配置2.3讨论3分类框架3.1训练3.2测试3.3实现细节 查看详情

第五篇vggnet——论文翻译

文章目录摘要1引言2ConvNet配置2.1架构2.2配置2.3讨论3分类框架3.1训练3.2测试3.3实现细节 查看详情

htmldom第五篇

通过HTMLDOM,JavaScript能够访问HTML文档中的每个元素。HTMLDOM允许您在事件发生时执行代码。当HTML元素"有事情发生"时,浏览器就会生成事件:在元素上点击加载页面改变输入字段添加、删除和替换HTML元素HTMLDOM允许JavaScript对HTML事... 查看详情

pytorch学习笔记第五篇——训练分类器(代码片段)

文章目录1.数据2.训练图像分类器2.1加载并标准化CIFAR102.2训练图像3.定义卷积神经网络、损失函数、优化器、训练网络和保存模型4.测试自己的模型5.在GPU上进行训练1.数据通常,当您必须处理图像,文本,音频或视频... 查看详情

kafka消息队列大数据实战教程-第五篇(broker工作原理以及节点服役)

文章目录前言一、zookeeper存储1.1启动zookeeper客户端1.2查看kafka的broker的ids信息1.3查看kafka的broker里的topics信息1.4查看kafka集群的leader信息二、节点服役2.1服役新节点2.1.1克隆新节点,修改IP地址,主机名称2.1.2修改新节点配置文件2.1... 查看详情

kafka消息队列大数据实战教程-第五篇(broker工作原理以及节点服役)

文章目录前言一、zookeeper存储1.1启动zookeeper客户端1.2查看kafka的broker的ids信息1.3查看kafka的broker里的topics信息1.4查看kafka集群的leader信息二、节点服役2.1服役新节点2.1.1克隆新节点,修改IP地址,主机名称2.1.2修改新节点配置文件2.1... 查看详情

开始写游戏---第五篇

开始写游戏---第五篇  今天写了一个这个组件:        代码:          用的时候这么用:               这是组件的运行效果:      写是写好了。。。但是我发现,之前写... 查看详情

团队第五篇

这一周,我们主要运用本学期所学的数据库知识来完成。用所学的SQL语句来对上周所建立的数据表进行创建。下面是小组成员创建的语句及截图:用户(用户名,电话,会员等级,积分)createtableUsers(U#char(6)notnull,Namechar(8)notnull,Phone... 查看详情

小白入门深度学习|第五篇:数据不均衡的处理方法

前言: 查看详情

第五篇二叉搜索树

 typedefstructnode{intnum;structnode*left;structnode*right;}Node;typedefstruct{Node*root;}Tree;/***@brief建树*/Tree*createTree(){Tree*tree=malloc(sizeof(Tree));tree->root=NULL;returntree;}/***@b 查看详情

第五篇:模块

 定义模块              一、模块基本概念1、模块是从逻辑上组织python代码的形式2、当代码量变得相当大的时候,最好把代码分成一些有3、组织的代码段,前提是保证它们的... 查看详情

rabbitmq第五篇:spring集成rabbitmq

  前面几篇讲解了如何使用rabbitMq,这一篇主要讲解spring集成rabbitmq。  首先引入配置文件org.springframework.amqp,如下<dependency><groupId>org.springframework.amqp</groupId><artifactId>spring 查看详情

第五篇css补充二

h1{background-color:palegreen}一、内容概要1、图标2、目录规划3、a标签中的img标签在浏览器中的适应性4、后台管理系统设置5、边缘提示框6、登录页面图标7、静态对话框8、加减框补充知识:line-height是行高,也可以定义行间距用法:... 查看详情