编辑代码

第3
/*
print(myString)
let ivar myString = "Hello world!     -  swift.jsrun.net"
v = self.view.viewWithTag(4)
UMeManimotelnthontrion ocneadotcFoot350)
1)
let iv =self.view.view(4)!
UIView,animate(withDuration: 2,animatons:(
iv.frame.orign.x += 100
if iv.frame.origin.x > self.view.feame.size.width(
iv.frame.origin.x = 0
1了
1)

let iv =self.view.viewWithTag(4)!
UIView,animate(withDuration: 2,animatons(
iv.transfrom=CGAffineTranfrom(scaleX: 0.8,y: 0.8)))
let iv = self.view.viewWithTag(4)!
UIView.animate(withDuration: 2,animatons(
iv.alpha = 0.1
3)
impoort Ulkit
impoort AVkit
class ViewController: UIViewController (
@IBAction func play(sender:Any)
let path = Bundle.main.path(forResource:"test",offype:"mov")
let url = URL(fileURLWithpath: path!)
let plsyer =AVplayer(url:url)
let PlayerViewController =AVplayerVlewConterollerO

PlayerViewController.plsyer =plsyer

PlayerViewController.view.frame =CGRect(x:20,y:100,width:self.view.bounds.width -40,heihjt:20self.addChild(PlayerViewController)
self.view.addSubview(PlayerViewController.view)
mport Ulkit
mport AVkit
lass ViewController: UIViewController {
@IBAction func Networkplay(_sender:UIButton) (
let neturl ="http://bos.nj.bpc.baidu.com/tieba-smallideo/11772_3c435014fb2dd9a5fd56a57"
guard let networkUrl = URL(string: neturl) else (return]

let player = AVplayer(url: networkUrl)
let PlayerViewController = AVplayerVlewConteroller(0
PlayerViewController.player =player
self.present(PlayerViewController,true,completion: nil)
}
}

import UlKit

import AVKit

import AVFoundation
class ViewController: UIViewControllerf

var playFlag=falae

var playerViewController=AVPlayerViewController(O

Windows (CRLF) 
var soundPlayer : AVAudioPlayer!
override funce viewDidLoad0f
super.viewDidLoad0
//Do any additional setup after loaing the view.
let iv =sellf.view.viewWithTag(4)! as! Ullmageview

let img =Ullmage.animatedImageNamed("frame_",duration:0.5)

iv.image=img


Timer.scheduleTimer(timerlnterval:2.0,target:self,selector:#selector(dorTimer),userlnfo:nil,repeats:true)
@objo func dorTimer0
let iv =self.view.viewWithTag(4)!
UIView.animate(withDuration:2,animations:
iv.transform=iv.transform.rotated(by:CGFloat(360)) I
))
@IBAction func onPlayAudio(_sender:UIButton)(

let title=sender.currentTitle
let path =Bundle .main.path(forResource:title,ofType:"mp3")//将路径转化为URL
let url=URL(fileURLWithPath:path!)

soundPlayer=try?AVAudioPlayer(contentsOf:url)

soundPlayer.Play0
@IBAction func onPlayVideo( sender:UIButton)(
if !playFlag(

let path=Bundle.main.path(forResource:"rollinwild",ofType:"mp4")//转化为URL
let url–URL(fileURLWithPath:path!)

let player=AVPlayer(url:url)
//AVPlayerViewController实例化
player.play0

playerViewController.player=player

let buttonPosition=sender.frame

let x =buttonPosition.origin.x-200

let v=buttonPosition.oriain.v-120
playerViewController.view.frame=CGRect(xx,y:y,width:200,height:112)
self.addChild(playerViewController)
self.view.addSubview(playerViewController.view)
playFlag=true
)
else
playerViewController.view.removeFromSuperview)
playFlag=false

NotificationCenter.default.addObserver(self,selector:#selector(receivedRotation(notification)), name:NSNotification.Name.UIDevceOrientationDidChange,object:nil)

func receivedRotation(notification:NSNotification)[
backgroundView.frame=CGRect(x:0,y:0,width:self.view.frame.size.width,height:self.view.frame.size.height)
import Ulkit
import AVFoundation
class ViewController: ViewController (

var soundplayer : AVFoundation!
let path = Bundle.main.path(foResource:"bird",ofTtpe:"mp3")//将路径转换为URL
let url = URL(fileURLWithpath: path!)
soundplayer= try? AVAudioplayer(contentsof:url)

soundplayer.play0
}
}
struct ManyFaces: View {
    static let emoji = [" ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " ", " "]

    var body: some View {
        TimelineView(.periodic(from: .now, by: 0.2)) { timeline in

            HStack(spacing: 120) {

                let randomEmoji = ManyFaces.emoji[Int.random(in: 0..<ManyFaces.emoji.count)]

                Text(randomEmoji)
                    .font(.largeTitle)
                    .scaleEffect(4.0)

                SubView()

            }
        }
    }

    struct SubView: View {
        var body: some View {
            let randomEmoji = ManyFaces.emoji[Int.random(in: 0..<ManyFaces.emoji.count)]

            Text(randomEmoji)
                .font(.largeTitle)
                .scaleEffect(4.0)
        }
    }
}
struct BeatingHeart: View {
    var body: some View {
        TimelineView(.cyclic(timeOffsets: [0.2, 0.2, 0.4])) { timeline in
            Heart(date: timeline.date)
        }
    }
}

struct Heart: View {
    @State private var phase = 0
    let scales: [CGFloat] = [1.0, 1.6, 2.0]

    let date: Date

    var body: some View {
        HStack {
            Text("️随意添加
            ")
                .font(.largeTitle)
                .scaleEffect(scales[phase])
                .animation(.spring(response: 0.10,
                                   dampingFraction: 0.24,
                                   blendDuration: 0.2),
                           value: phase)
                .onChange(of: date) { _ in
                    advanceAnimationPhase()
                }
                .onAppear {
                    advanceAnimationPhase()
                }

        }
    }

    func advanceAnimationPhase() {
        phase = (phase + 1) % scales.count
    }
}
YDWGIFView.swift
import UIKit
import ImageIO
import QuartzCore

class YDWGIFView: UIView {

    var width:CGFloat{return self.frame.size.width}
    var height:CGFloat{return self.frame.size.height}

    private var gifUrl:NSURL!

    private var totalTime:Float = 0 

    private var imageArray:Array<CGImage> = [] 
    private var timeArray:Array<NSNumber> = [] 


    func showGIFImageWithLocalName(name:String) {
        gifUrl = Bundle.main.url(forResource: name, withExtension: "gif")! as NSURL
        self.creatFrame()
    }

    func showGIFImageFromNetWork(url:NSURL) {
        let fileName = self.getMD5StringFromString(string: url.absoluteString!)
        let filePath = NSHomeDirectory()+"/Library/Caches/YDWGIF/" + fileName + ".gif"
        if FileManager.default.fileExists(atPath: filePath) {
            self.gifUrl = NSURL(fileURLWithPath: filePath)
            self.creatFrame()
        } else {
            let session = URLSession.shared
            let task = session.dataTask(with: url as URL, completionHandler: { (data, response, error) in
                DispatchQueue.main.async {
                    let path = NSURL(fileURLWithPath: filePath)
                    do {
                        try data?.write(to: path as URL)
                        self.gifUrl = NSURL(fileURLWithPath: filePath)
                        self.creatFrame()
                    } catch {

                    }
                }
            })
            task.resume()
        }
    }

    func creatFrame() {
        let url:CFURL = gifUrl as CFURL
        let gifSource  = CGImageSourceCreateWithURL(url, nil) // GIF所有资源
        let imageCount = CGImageSourceGetCount(gifSource!) // GIF图片个数

        for i in 0..<imageCount { 
            let imageRef = CGImageSourceCreateImageAtIndex(gifSource!, i, nil)
            imageArray.append(imageRef!)

           
            let sourceDict = CGImageSourceCopyPropertiesAtIndex(gifSource!, i, nil) as NSDictionary!

            
            let imageWidth = sourceDict![String(kCGImagePropertyPixelWidth)] as! NSNumber
            let imageHeight = sourceDict![String(kCGImagePropertyPixelHeight)] as! NSNumber
            if imageWidth.floatValue/imageHeight.floatValue != Float(width/height) {
                self.fitSacle(imageWidth: CGFloat(imageWidth), imageHeight: CGFloat(imageHeight))
            }

            let gifDict = sourceDict![String(kCGImagePropertyGIFDictionary)] as! NSDictionary
            let time = gifDict[String(kCGImagePropertyGIFDelayTime)] as! NSNumber
            timeArray.append(time)
            totalTime += time.floatValue
        }
        self.showAnimation()
    }

    func showAnimation() {
        let animation = CAKeyframeAnimation(keyPath: "contents")
        var current:Float = 0
        var timeKeys:Array<NSNumber> = []

        for time in timeArray {
            timeKeys.append(NSNumber(floatLiteral: Double(current/totalTime)))
            current += time.floatValue
        }

        animation.keyTimes = timeKeys
        animation.values = imageArray
        animation.repeatCount = HUGE;
        animation.duration = TimeInterval(totalTime)
        animation.isRemovedOnCompletion = false
        self.layer.add(animation, forKey: "YDWGIFView")

    }

   
    func getMD5StringFromString(string:String) -> String {
        let str = string.cString(using: .utf8)
        let strlen = CC_LONG(string.lengthOfBytes(using: .utf8))
        let digeTlen = Int(CC_MD5_DIGEST_LENGTH)
        let result = UnsafeMutablePointer<CUnsignedChar>.allocate(capacity: digeTlen)
        CC_MD5(str!, strlen, result)
        let hash = NSMutableString()
        for i in 0..<digeTlen {
            hash.appendFormat("%02x", result[i])
        }
        return String(hash as String)
    }

    
    func cleanCache() {
        let folderPath = NSHomeDirectory()+"/Library/Caches/YDWGIF/"
        let manager = FileManager.default
        do {
            let fileName = try? manager.contentsOfDirectory(atPath: folderPath)
            for name in fileName! {
                try? manager.removeItem(atPath: folderPath+name)
            }
        } catch {

        }
    }

    func fitSacle(imageWidth:CGFloat, imageHeight:CGFloat) {
        var newWidth:CGFloat
        var newHeight:CGFloat
        if imageWidth/imageHeight > width/height {
            newHeight = width/(imageWidth/imageHeight)
            newWidth = width
        } else {
            newWidth = height*(imageWidth/imageHeight)
            newHeight = height
        }
        let point:CGPoint = self.center
        self.frame.size = CGSize(width: newWidth, height: newHeight)
        self.center = point
    }
}
*/