iPhone开发Swift基础03 视频、网络请求

视频播放AVPlayer

iOS9之前使用的是MPMoviePlayerController,随着iOS不断迭代,AVPlayer成为主流。
往项目中添加资源文件:
添加资源

import UIKit
import AVFoundation

class ViewController: UIViewController{
   
    var avPlayer : AVPlayer?
    
    override func viewDidLoad() {
   
        super.viewDidLoad()
        
        let mp4url = Bundle.main.path(forResource: "apple", ofType: "mp4")
        let movieURL = URL(fileURLWithPath: mp4url!)
        avPlayer = AVPlayer(url: movieURL)
        
        let avPlayerLayer = AVPlayerLayer(player: avPlayer)
        avPlayerLayer.frame = self.view.frame
        avPlayerLayer.videoGravity = AVLayerVideoGravity.resizeAspectFill
        self.view.layer.addSublayer(avPlayerLayer)
        
        avPlayer?.play()
    }
}

videoGravity属性类型:

  • AVLayerVideoGravity.resizeAspectFill 保留宽高比,填满屏幕
  • AVLayerVideoGravity.resizeAspect 显示范围内缩放视频大小,保持宽高比
  • AVLayerVideoGravity.resize 拉伸视频来匹配显示区域

AVPlayerViewController

使用AVPlayerViewController需要再import AVKit

import UIKit
import AVFoundation
import AVKit

class ViewController: UIViewController{
   
    
    override func viewDidLoad() {
   
        super.viewDidLoad()
        
        let mp4url = Bundle.main.path(forResource: "apple", ofType: "mp4")
        let movieURL = URL(fileURLWithPath: mp4url!)
        
        let avPlayer = AVPlayer(url: movieURL)
        let avPlayerVC = AVPlayerViewController()
        avPlayerVC.player = avPlayer
        avPlayerVC.videoGravity = AVLayerVideoGravity.resizeAspect
        avPlayerVC.allowsPictureInPicturePlayback = true
        avPlayerVC.showsPlaybackControls = true
        avPlayerVC.view.frame = self.view.bounds
        
        avPlayerVC.player!.play()
        self.view.addSubview(avPlayerVC.view)
    }
}
配置画中画

项目配置画中画的过程

  • 第一步点击Capabilities
  • 第二步点击增加Capabilities - Background Modes
  • 第三步点击Audio AirPlay and Picture in Picture

网络请求

HTTP定义了与服务器交互的不同方法,其中最基本的有4种:GET、POST、PUT、DELETE。

GET与POST

每个GET与POST都由一系列的HTTP请求头组成,这些请求头定义了客户端想从服务器端请求什么数据。同样,响应是由一系列的应答头和应答数据组成。

GET使用MIME类型application/x-www-form-urlencoded的urlencoded文本格式传递参数。Urlencoding是一种字符编码,保证被传递的参数遵循规范。

POST参数也是被URL编码的,但变量名/变量值不作为URL的一部分被传送,而是放在实际HTTP请求消息内部被传送。

GET是从服务器上获取数据,POST是向服务器发送数据。GET通过URL提交数据,数据可以在URL中看见。POST是将请求数据放在请求头HTML HEADER 内提交的。GET提交的数据最多只能有1024字节,而POST没有这个限制。使用GET的时候,参数会暴露出来而POST不会,因此,GET常用于提交非敏感数据。

在iOS开发中常用URLSession的委托协议来实现不同阶段回调不同的对象方法。

URLSession

使用URLSession进行网络请求

URLSession是一组相互依赖的类,它的绝大部分组件和NSURLConnection中的组件相同。比如,URLRequest、URLCache等等。

URLSession的不同之处在于,它将URLConnection替换为URLSession和URLSessionConfiguration,以及三个URLSessionTask的子类:URLSessionDataTask、URLSessionUploadTask、URLSessionDownloadTask。

使用URLSession可以实现:

  • 通过URL下载数据到内存
  • 通过URL下载数据到文件系统
  • 将数据上传到指定的URL
  • 在后台完成上传和下载
  • 下载文件具有断点续传的功能
  • 后台上传或下载具有任务进度跟踪的功能
class ViewController: UIViewController{
   
    
    var label : UILabel!
    
    override func viewDidLoad() {
   
        super.viewDidLoad()
        
        label = UILabel(frame: CGRect(x: 0
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值