swift基础学习(八)
生活随笔
收集整理的這篇文章主要介紹了
swift基础学习(八)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
####1.主要用到的知識(shí)點(diǎn)
- CAGradientLayer 處理漸變色
- AVAudioPlayer 音頻播放
- Timer 定時(shí)器
- CABasicAnimation 動(dòng)畫(huà)
#####2.效果圖
####3.代碼
import UIKit import AVFoundationclass ViewController: UIViewController, AVAudioPlayerDelegate {var gradientLayer: CAGradientLayer! var playBtn: UIButton = UIButton() var player: AVAudioPlayer? var flag: Bool = true var timer: Timer!override func viewDidLoad() { super.viewDidLoad() setupUI()}// 初始化界面及其他 func setupUI() { createGradientLayer() let path = Bundle.main.path(forResource: "Ecstasy", ofType: "mp3") let musicUrl = URL(fileURLWithPath: path!)try? player = AVAudioPlayer(contentsOf: musicUrl) player?.delegate = self playBtn = UIButton(type: .custom) playBtn.addTarget(self, action: #selector(playMusic), for: .touchUpInside)playBtn.frame.origin = CGPoint(x: self.view.frame.width/2.0 - 77, y: self.view.frame.height/2.0 - 77) playBtn.frame.size = CGSize(width: 144, height: 144) playBtn.setBackgroundImage(UIImage(named:"music play"), for: .normal) view.addSubview(playBtn) }// 播放/暫停 func playMusic() {if player != nil { if flag { player?.play() timer = Timer.scheduledTimer(timeInterval: 0.25, target: self, selector: #selector(changeBgColor), userInfo: nil, repeats: true) if self.playBtn.layer.speed == 0 { start() }else{ addRotationAnim() } flag = false }else{ player?.pause() timer.invalidate() pauseAnimation() flag = true } } }// 音頻播放完成的時(shí)候調(diào)用 func audioPlayerDidFinishPlaying(_ player: AVAudioPlayer, successfully flag: Bool) { self.player?.stop() self.timer.invalidate() pauseAnimation() self.flag = true }// 添加動(dòng)畫(huà) func addRotationAnim() { // 1.創(chuàng)建動(dòng)畫(huà) let rotationAnim = CABasicAnimation(keyPath: "transform.rotation.z") // 2.設(shè)置動(dòng)畫(huà)的屬性 rotationAnim.fromValue = 0 rotationAnim.toValue = Double.pi * 2 rotationAnim.repeatCount = MAXFLOAT rotationAnim.duration = 5 // 這個(gè)屬性很重要 如果不設(shè)置當(dāng)頁(yè)面運(yùn)行到后臺(tái)再次進(jìn)入該頁(yè)面的時(shí)候 動(dòng)畫(huà)會(huì)停止 rotationAnim.isRemovedOnCompletion = falserotationAnim.fillMode = kCAFillModeForwards; // 3.將動(dòng)畫(huà)添加到layer中 self.playBtn.layer.add(rotationAnim, forKey: nil) }// 暫停動(dòng)畫(huà) func pauseAnimation() { let pauseTime = self.playBtn.layer.convertTime(CACurrentMediaTime(), from: nil) self.playBtn.layer.timeOffset = pauseTimeself.playBtn.layer.speed = 0 }// 開(kāi)始動(dòng)畫(huà) func start() { let pauseTime = self.playBtn.layer.timeOffsetlet begin = CACurrentMediaTime() - pauseTime self.playBtn.layer.timeOffset = 0 self.playBtn.layer.beginTime = begin self.playBtn.layer.speed = 1 }// 漸變色 func createGradientLayer() { gradientLayer = CAGradientLayer()gradientLayer.frame = view.bounds let color1 = UIColor(white: 0.5, alpha: 0.2).cgColor as CGColor let color2 = UIColor(red: 1.0, green: 0, blue: 0, alpha: 0.4).cgColor as CGColor let color3 = UIColor(red: 0, green: 1, blue: 0, alpha: 0.3).cgColor as CGColor let color4 = UIColor(red: 0, green: 0, blue: 1, alpha: 0.3).cgColor as CGColor let color5 = UIColor(white: 0.4, alpha: 0.2).cgColor as CGColorgradientLayer.colors = [color1, color2, color3, color4, color5] gradientLayer.locations = [0.10, 0.30, 0.50, 0.70, 0.90] gradientLayer.startPoint = CGPoint(x: 0, y: 0) gradientLayer.endPoint = CGPoint(x: 1, y: 1) self.view.layer.addSublayer(gradientLayer) }// 背景色改變 func changeBgColor() { let redValue = CGFloat(drand48()) let blueValue = CGFloat(drand48()) let greenValue = CGFloat(drand48()) self.view.backgroundColor = UIColor(red: redValue, green: greenValue, blue: blueValue, alpha: 1.0) }}復(fù)制代碼總結(jié)
以上是生活随笔為你收集整理的swift基础学习(八)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 做梦梦到跳伞是什么意思
- 下一篇: 修改UITextField中的place