编辑代码

//  
//  ViewController.swift
//  BirdSound
//
//  Created by Zhifeng Chen on 2020/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!)
        // 调用 AVAudioPlayer 函数,生成播放器
        soundPlayer.play()
    }
}
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()
let iv = self.view.viewWithTag(4)!
UIView.animate(withDuration: 2, animations: {
    iv.transform = iv.transform.rotated(by: CGFloat (360))

})
let iv = self.viewWithTag(4)!
UIView.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.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

})
//
//  ViewController.swift
//  VideoPlay_Sandbox
//
//  Created by Zhifeng Chen on 2020/8/3.
//  Copyright 2020 Zhifeng Chen. All rights reserved.
//

import UIKit
import AVKit

class ViewController:UIViewController {


@IBAction func Play(_ sender: Any)
}
    //打开在沙盒中的视频文件 test.mov
    let path = Bundle.main.path(forResource:"test",ofType:"mov")
    //转换为URL
    let url = URL(fileURLWithPath: path!)
    //打开 AVPlayer
    let player = AVPlayer(url: url)
    //AVPlayerViewController实例化
    let playerViewContreller = AVPlayerViewController()
    //设置播放器
    playerViewContreller.player = player
    //添加播放器的 View 大小和范围
    playerViewContreller.view.frame = CGRect(x: 20, y: 100, width:self.view.bounds.width - 40, height:200)
    self.addChiid(playerViewContreller)
    self.view.addSubview(playerViewContreller.view)
    }
}
//
// ViewController.seift
// Videoply_Network
// 
// Created by Zhifeng Chen on 2020/8/3.
// Copyright © 2020 hifeng 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 networkUr1 = URI (string : neturl ) else ( return )
        //播放网络上的视频
        let player = AVPlayer (url: networkUr1)
        let playerViewController = AVPlayerViewController ()
        playerViewController.player = player
        //弹出新窗口
        self. present (playerViewController, animated: true, completion:nil)
    }
//
// ViewController.swift
// AnimalUnderstanding
//
// Created by Zhifeng Chen on 2020/8/3.
// Copyright © 2020 2hifeng Chen. All rights reserved.
//
impact UIKit
//导入视频支持库
import AVKit
11导入音频支持库
import AVFoundat ion

class ViewController: UIViewController {
    // 是否摇放视频标记
    var playFlag = false
    //视频播放控制器
    var playerViewController = AVPlayerViewController ()
    // 音频播放器变量
    var soundP layer : AvAudioPlayer!

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

        // 开启定时器,自动调用相关函数
        Timer . scheduledT imer (timeInterval: 2.0, target: self, selector:#selector (doTimer), userInfo: nil, repeats: true)
    }
    @obje 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) {
        // 获取当前按钮的 tit1e
        let title = sender.currentritle
        // 从沙盒中读取文件所在路径,文件名为bizd.mp3
        let path = Bandle. main.path (forResource: title, ofType: "mp3")
        // 将路径转换为 URI
        let url = URI (fileURIwithPath: path!)
        // 调用 AVAudioBlayer 函数,生成播放器
        soundPlaver = try? AvAudioPlayer (contentsof: url)
        // 播放器播放声音,默认是循环播放方式
        soundPlayer.play ()
    }
    @IBAction fune onPlayVideo ( sender: UIButton) {
        if !playFlag {
            //打开在沙盒中的视频文件 test.mov
            let oato - Bunale .main.path (ForResource: "rol1inwi ld", ofType: "mp4"
            //转化为 URI
            let url = URL (fileURLWithPath: path!)
            //打开 AVPlayer
            let player = AVPlayer (url: url)
            //AVPlayerViewcontroller 实例化
            player . play ()
            //设置播放器
            playerViewcontroller.player = player
            //获得当前按钮的位器和尺寸
            let buttonPosition = sender.frame
            // 视频播放的位置×
            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 (playerviencontroller.view)
            playFlag = true
        }
        else {
            playerViewController.view.removeFronSuperview ( )
            playFlag = false
        }
    }
}
UIDeviceorientationDidChangeNotification
//1.在控制器的 viewDidt.oad()适当的地方注册通知监听者
      //设置UIDevice 方向变化监听的通知
        Notificat ioncenter.default .addobserver (self, selector: #selector (receivedRotation (notification:) ) , name: NSNotification. Name.UIDeviceOrientationDidChange, 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)
    }
    @IBAction func onplayvideol_ sender: UIButton) {
        if !playelag {
            //打开在沙盒中的视频文件 test.mov
            let path - Bumdle.main. path forPesource: "roll irmild", ortype: "mp4")
            //转化力 URL
            let url = URL (fleURImithpath: path!)
            //打开APlaver
            let player = AVPlayer (arl: url)
            //AVPlayerViewController实例化
            player.play()
            //设量播放器
            playerViewController.player = player
            //获得当前按钮的位量和尺子
            let buttonPosition = serder.frame
            //视频潘放的位置x
            let x = buttonPosition.origin.x-200
            //视频播放的位置y
            let y = buttonPosition.origin.y-120
            //添加播放器的 View 大小和范園
            playervienController.view.frame = CGRect (x: x, y: y, width:200, height: 112)
            self.addChild (playerViewController)
            self.view.addSubview (playerViewController.view)
            playFlag = true
        }
        else {
            playerViewController.view.removeFronSuperview()
            playFlag = false
        }
    }
}
UIDeviceOrientationDidChangeNotification
 //1• 在控制器的viewDidLoad()适当的地方注册通知监听者
       //设置 UIDevice 方向变化监听的通知
        NotificationCenter.default.addObserver (self, selector: #selector (receivedRotation (notification:) ), name: NSNotification.Name.ULDeviceorientationDidChange, object: ni1)
 //2.处理旅转过程中需要的操作
    //UIDevice 族转方向通知监听触发的方法
    func receivedRotation (notification : NSNot ification) {
        backgroundv iew . frame = CGRect (z: 0, y: 0, vidth: self.view.frame.size. width, neight: self.view.frame.size.neighi)
    }