编辑代码

//3.2语音播报
//
// ViewController.swift
//BirdSound
//
// Created by Zhifeng Chen on 2002/8/3.
// Copyright Ⓒ 2020 Zhifeng Chen. All rights reserved.
//

import UIKit
//导入音频支持库
import AVFoundation

class ViewController: UIViewController {
    //播放器变量
    var soundPlayer : AVAudioPlayer!

    @IBAction func onClicked(_ sender : UIButton) {
        //从沙盒中读取文件所在路径,文件名为bird.mp3.
        let path = Bundle.main.path(forResource: "bird", ofType: "mp3")
        //将路径转为URL
        let url = URL(fileURLWithPath: path!)
        //调用AVAudiorPlayer函数,生成播放器
        soundPlayer = try? AVAudioPlayer(contentsOf: url)
        //播放器播放声音,默认是循环播放方式
        soundPlayer.play()
    }
}

//3.3动画播报
let iv = self.view.viewWithTag(4)! as! UIImageView
//UIImage的一个方法animatedImageNamed可以调入一系列图片
//每个图片出现的间隔时间为0.5秒
let img = UIImage.animatedImageNamed("frame-", duration: 0.5)
//设置动画
iv.image = img

var imgs : Array<UIImage> = []
for i in 1...19 {
    let img = UIImage(named: "frame-\(i).png")!
    imgs.append(img)
}
let imgView = self.view.viewWithTag(4) as! UIImageView
imgView.animationImages = imgs
imgView.animationDuration = 0.8
imgView.startAnimating()

//3.3.2UIView动画播放方式
let iv = self.view.viewWithTag(4)!
UIView.animate(withDuration: 2, animations: {
    iv.transform = iv.transform.rotated(by: CGFloat(360))
})
let iv = self.view.viewWithTag(4)!
UIView.animate(withDuration: 2, animations: {
    iv.frame.origin.x +=100
    if iv.fram.origin.x > self.view.frame.size.width {
        iv.frame.origin.x = 0
    }
})
let iv = self.view.viewWithTag(4)!
UIView.animate(withDuration: 2, animations: {
    iv.transform = CGAffineTransform(scaleX:0.8, y:0.8)
})
let iv = self.view.viewWithTag(4)!
UIView.animate(withDuration: 2, animations: {
    iv.alpha = 0.1
})

//3.4视频播放
//
// viewController.swift
// videoPlay_Sandbox
//
// Created by Zhifeng Chen on 2020/8/3.
// Copyrigth Ⓒ 2020 zhifeng Chen. All rights reserved.
//

import UIKit
import AVKit

class viewController: UIViewController {
     
     @IBAction func play(_sender: Any)
     {
         //打开在沙盒中的视频文件test.mov
         let path = Bundle.main.paht(forResource: "test",ofType: "mov")
         //转化为URL
         let url = URL(fileURLWithPath: path!)
         //打开AVPlayer
         let player = AVPlayer(url: url)
         //AVPlayerViewController实列化
         let playerViewController = AVPlayerViewController()
         //设置播放器
         playerViewController.player = player
         //添加播放器的View大小和范围
         playerViewController.view.frame = CGRect(x: 20, y: 100, width: self.view.bounds.width - 40, height: 200)
         self.addChild(playerViewController)
         self.view.addSubview(playerViewController.view)
     }
}
//
// ViewController.swift
// VideoPlay_Network
//
// Created by Zhifeng Chen on 2020/8/3.
// Copyright Ⓒ 2020 Zhifeng Chen. All rights reserved.
//

import UIKit
import AVKit

class viewController: UIViewController {

    @IBAction func NetworkPlay(_sender: UIButton) {
        let neturl = "http://bos.nj.bpc.baidu.com/tieba-smallvideo/11772_3c435014fb2dd9a5fd56a57cc369f6a0.mp4"
        guard let NetworkUrl = URL(string: neturl ) else { return }
        //播放网络上的视频
        let player = AVPlayer(url: networkUrl)
        let playerViewController = AVPlayerViewController()
        playerViewController.player = player
        //弹出新窗口
        self.present(playerViewController, animated: true, completion: nil)
    }
}
//3.5.1听音看形识动物
//
// ViewController.swift
// AnimaIUnderstanding
//
// Created by Zhifeng Chen on 2020/8/3.
// Copyright Ⓒ 2020 Zhifeng Chen. All rights reserved.
//

import UIKit
//导入视频支持库
impore AVKit
//导入音频支持库
import AVFoundation

class viewController: UIViewController {
    //是否播放视频标记
    var playFlag = false
    //视频播放控制器
    var playerViewController = AVPlayerViewController()
        //音频播放器变量
    var soundPlayer : AVAudioPlayer!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        let iv = self.view.viewWithTag(4)! as! UIImageView
        //UIImage的一个方法animatedImageNamed可调入一系列图片
        //每个图片出现的间隔时间为0.5秒
        let img = UIImage.animatedImageNamed("frame-",duration: 0.5)
        //设置动画
        iv.image = img

        //开启定时器,自动调用相关函数
        Timer.scheduledTimer(timeInterval: 2.0, targer: self, sekector: #selector(doTimer), userInfo: nil, repeats: true)
    }

    @objc func doTimer(){
        let iv = self.view.viewWithTag(4)!
        UIView.animate(withDuration: 2,animations: {
            iv.transform = iv.transform.rotated(by: CGFloat(360))
        })
    }

    @IBAction func onPlayAudio(_sender : UIButton) {
        //获取当前按钮的title
        let title = sender.currentTitle
        //从沙盒中读取文件所在路径,文件名为bird.mp3
        let path = Bundle.main.path(forResource: title, ofType: "mp3")
        //将路径转换为URL
        let url = URL(fileURLWithPath: path!)
        //调用AVAudioPlayer函数,生成播放器
        soundPlayer = try? AVAudioPlayer(contentsOf: url)
        //播放器播放声音,默认是循环播放方式
        soundPlayer.play()
    }


@IBAction func onPlayVideo(_sender: UIButton) {
    if !playFlag {
        //打开在沙盒中的视频文件test.mov
        let path = Bundle.main.path(forResource: "rollinwild",ofType:"mp4")
        //转化为URL
        let url = URL(fileURLWithPath: path!)
        //打开AVPlayer
        let player = AVPlayer(url: url)
        //AVPlayerViewController实例化
        player.play()
        //设置播放器
        playerViewController.player = player
        //获得当前按钮的位置和尺寸
        let buttonPosition = sender.frame
        //视频播放的位置x
        let x =buttonPosition.origin.x-200
        //视频播放的位置y
        let y =buttonPosition.origin.y-120
        //添加播放器的View大小和范围
        playerViewController.view.frame = CGRect(x: x, y: y , width: 200, height: 112)
        self.addChild(playerViewController)
        self.view.addSubview(playerViewController.view)
        playFlag = true
    }
    else {
        playerViewController.view.removeFromSuperview()
        playFlag = false
      }
    }
}
//3.5.2屏幕旋转的处理
UIDeviceorientationDidChangeNotification

//1. 在控制器的viewDidLoad()适当的地方注册通知监听者
       //设置UIDevice方向变化监听的通知
       NotificationCenter.default.addObserver(self, selector: #selector(receivedRotstion(notification:)),name: NSNotification.Name.UIDeviceOrientationDidChange, object: nil)
//2.处理旋转过程中需要的操作
       //UIDevice旋转方向通知监听触发的方式
       func receivedRotstion(notification : NSNotification){
           backgroundView,frame = CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: self.view.frame.size,height)
       }