编辑代码

//
// ViewController.swift
// BirdSound
//
// Created by Zhifeng Chen on 2020/8/3
// Copyright @ 2020 Zhifeng Chen. All rights reserved.
//

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

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

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

3.3动画播放兔子弹跳
let iv = self.view.viewWithTag(4)! asl 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.startAnu=nimating()

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

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 = sdlf.view.viewWithTag(4) as! UIImageView
imgView.animationImages = imgs
imgView.animationDuration = 0.8
imgView.startAnimating()

UIView的旋转动画
let iv = self.view.viewWithTag(4)!
UIIiew.animate(withDuration: 2, animations: {
    iv.transform = iv.transform.rotated(by: CGFloat(360))
})

平移动画
let iv = self.view.viewWithTag(4)!
UIIiew.animate(withDuration: 2, animations: {
    iv.frame.origin.x += 100
    if iv.frame.origin.x > self.view.frame.size.width {
        iv.frame.origin.x = 0
    }
})

缩放动画
let iv = self.view.viewWithTag(4)!
UIIiew.animate(withDuration: 2, animations: {
    iv.transform = CGAffineTransform(scaleX: 0.8, y: 0.8)
})

透明度动画
let iv = self.view.viewWithTag(4)!
UIIiew.animate(withDuration: 2, animations: {
    iv.alpha = 0.1
})

3.4 视频播放
//
// ViewController.swift
// VideoPlay_Sandbox
//
// Created by Zgifeng Chen on 2020/8/3.
// Copyright @ 2020 Zhifeng Chen. All rights reserved.
//

import UIKit
import AVKit


class ViewController: UIViewController {

    @IBAction func Play(_ sendeer: Any)
    {
        //打开在沙盒中的视频文件test.mov
        let path = Bundle.main.path(forResource: "test", ofType: "mov")
        //转化为URL
        let url = URL(fileURLWithPath: path!)
        //打开AVPlayer
        let player = AVPlayer(nrl: nrl)
        //AVPlayerViewController实例化
        let playerViewController = AVPlayerViewController()
        //设置播放器
        playerViewController.player = player
        //添加播放器的View大小和范围
        playerViewController.view.frame = CGRect(x: 20, y: 100, width: seif.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 ersrrved.
//

import UIKit
import UIKit

class ViewController: UIViewController {

    @IBAction func NetworkPlay(_ sender: UIButton) {
        let neturl = "http://bos.nj.bpc.baidu.com/tieba-smallvideo/11772_3c435014fb2dd9a5fd56a57cc369f6a0.mp4"
        grard 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
// AnimalUnderstanding
//
// Created by Zhifeng Chen. All rights reserved.
//

import UIKit
//导入视频支持库
import 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的一个方法animatedTmageNamed可以调入一系列图片
        //每个图片出现的间隔时间为0.5秒
        let img = UIImage.animatedImageNamed("frame-", duration: 0.5)
        //设置动画
        iv.image = img
        
        //开启定时器,自动调用相关函数
        Timer.scheduledTimer(timeLnterval: 2.0, target: self, selector:#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 onPlayAudio(_sender: UIButton) {
        if !playFlag {
            //打开沙盒中的视频文件test.mov
            let path = Bundle.main.path(forResource: "rollinwild", offype: "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方向变化监听的通知
      NotifitacionCenter.defauit.addObserver(self, selector: #selector(receivedRotation(notification:))
      ,name: NSNotification.Name.UIDeviceOrientationDidChsnge, object: nil)
//2. 处理旋转过程中需要的操作
     //UIDevice旋转方向通知监听触发的方法
     func receivedRotation(notification : NSNotification)(
         backgroundView.frame = CGRect(x: 0, y: 0, width: self.view.frame.
size.width, height: self.view.frame.size.height)
     )