ViewDidLoad (把音樂加進去)

練習以下功能:

  • 建立漸層圖層與遮照
  • 播放背景音樂
  • 利用 CAEmitterLayer製做食物雨動畫

素材如下:

先來把素材去背…去背的方式如下:

其中之一的過程如下“

去背後…設定好名字;來看一下去背後的KFC_Logo的背景參數:

查詢顏色的RGB:

https://yangcha.github.io/iview/iview.html

查看底色

將影片加到 Xcode 專案

之前要先處理影片的方式其中之一:

更多方式如:

拖拉音樂進去….

比方音樂檔是 .mp3,將它拖曳到專案的 Project navigator 裡
(記得 copy items & Add to targets 要勾選)

左邊是原本“彈”出來的畫面>>>>>打勾後變成右邊的畫面^^^^^^^^^^^

快速動畫:

請用Drag-in & Drag-out的方式唷

技能:

這次就先加上 音樂

import UIKitimport AVFoundationimport MediaPlayer

先把Logo設定好:

let imageView = UIImageView (frame: CGRect(x: 40, y: 200, width: 600, height: 180))imageView.image = UIImage(named: "1.KFC_Logo_backMak")
//圖片的名字

接下來讓他轉換用CGAffineTransform 的功能:

圖片變形=轉換所得到的測量尺寸(x: 1.5, y: 1.5)

imageView.transform = CGAffineTransform.identity.scaledBy(x: 1.5, y: 1.5)

視覺固定外觀固定常數!

let kfcView = UIView (frame: imageView.frame)

開始在Logo上面做CAGradientLayer 製作漸層

漸層的顏色調整:

let gradientLayer = CAGradientLayer()gradientLayer.frame = kfcView.frame
// 要給漸層框架後才能部署顏色
gradientLayer.colors = [UIColor(red: 196/255, green: 18/255, blue: 47/255, alpha: 1.0).cgColor, UIColor.yellow.cgColor]

再把顏色加進去…

kfcView.layer.addSublayer(gradientLayer)kfcView.mask = imageView
// 去做遮蓋
view.addSubview(kfcView)
//幾上去遮蓋到(kfcView)
view.backgroundColor = .darkGray
//再去設定Logo上面的灰黑色

之前有手動加入音樂…,現在用程式的方式顯現:

//voice , soundlet fileURL = Bundle.main.url(forResource: "Andy_neverGiveUp",withExtension: "mp3")!let playItem = AVPlayerItem(url: fileURL)player.replaceCurrentItem(with: playItem)player.play()let volumeView = MPVolumeView(frame: CGRect(x: 10, y: 750, width: 300, height: 50))view.addSubview(volumeView)

開始部署圖片你要掉落的景像:

//nuglet nugCell = CAEmitterCell()nugCell.contents = UIImage(named: "2Nug_deMask")?.cgImagenugCell.birthRate = 1.5nugCell.lifetime = 30nugCell.velocity = 300nugCell.yAcceleration = 50nugCell.scale = 0.3nugCell.spin = 0.5nugCell.spinRange = 3nugCell.emissionRange = CGFloat.pi

接下來也是:

//CKlet legCell = CAEmitterCell()legCell.contents = UIImage(named: "3.Leg_deMask")?.cgImagelegCell.birthRate = 0.5     // 產生的平率legCell.lifetime = 30       // 生命週期legCell.velocity = 150      // 運轉速度legCell.yAcceleration = 40  // y方向的速度legCell.scale = 0.2         // 縮放比例legCell.spin = 0.7          // 自己旋轉速度legCell.spinRange = 2       // 旋轉角度範圍legCell.emissionRange = CGFloat.pi

再加入要發射的速度和方向:

//4slet sCell = CAEmitterCell()sCell.contents = UIImage(named: "4s")?.cgImagesCell.birthRate = 0.5       // 產生(倍數)頻率,默認1.0sCell.lifetime = 30         // 生命週期係數, 默認1.0sCell.velocity = 300        // 基本速度係數(運轉速度), 默認1.0sCell.yAcceleration = 50    // y方向的加速度sCell.scale = 0.2           // 縮放比例係數, 默認1.0sCell.spin = 0.7            // 自旋轉速度係數, 默認1.0sCell.spinRange = 2         // 旋轉角度範圍sCell.alphaSpeed = 2        // 透明度在生命周期内的改变速度

再加入瀑布要下去的速度和方向:

//foodfallinglet foodpool = CAEmitterLayer()foodpool.emitterCells = [nugCell,legCell,sCell]foodpool.emitterPosition = CGPoint(x: view.bounds.width/2, y: -50)foodpool.emitterSize = CGSize(width: view.bounds.width, height: 0)foodpool.emitterShape = .lineview.layer.addSublayer(foodpool)view.backgroundColor = .clear
記得開音樂…..

參考功能:

關於Bundle (AVplayer()):

關於音效如何變魔術:

去掉3個單字…就可以下載音樂MP3 , Mp4

參考作品:

--

--

weiWeiCFI
彼得潘的 Swift iOS / Flutter App 開發教室

Keep simple being activity life and move on! 階段性人生,新的領域更要比他人更加把勁,讓自己又開始呼吸;You never try you never know!