第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
}
}
*/