视频播放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