LoginSignup
0
0

#11 カスタムコントローラークラスとviewDidLoadを利用してアプリの画面をカスタマイズ

Posted at

このプロジェクトのインスピレーションは、最近の桜の季節から来ています。そのため、関連する画面を作成したいと思います。

結果は以下の通りです:

1.gif

音楽付き:

class ViewController: UIViewController {
    
    func sakutaEmitterCell() {
        let sakutaEmitterCell = CAEmitterCell()
        sakutaEmitterCell.contents = UIImage(named: "sakura_fubuki")?.cgImage
        sakutaEmitterCell.birthRate = 3
        sakutaEmitterCell.lifetime = 20
        sakutaEmitterCell.velocity = 100
        sakutaEmitterCell.scale = 0.5
        sakutaEmitterCell.scaleRange = 0.3
        sakutaEmitterCell.yAcceleration = 70
        sakutaEmitterCell.emissionRange = CGFloat.pi

        let sakuraEmitterLayer = CAEmitterLayer()
        sakuraEmitterLayer.emitterCells = [sakutaEmitterCell]
        sakuraEmitterLayer.emitterPosition = CGPoint(x: view.bounds.width / 2, y: -50)
        sakuraEmitterLayer.emitterSize = CGSize(width: view.bounds.width, height: 0)
        sakuraEmitterLayer.emitterShape = .cuboid
        view.layer.addSublayer(sakuraEmitterLayer)
    }
    
    let player = AVPlayer()

    override func viewDidLoad() {
        super.viewDidLoad()
        // ビューの追加設定
        view.backgroundColor = UIColor(red: 255, green: 255, blue: 255, alpha:0.4)
        sakutaEmitterCell()
        
        let SakuraSongUrl = Bundle.main.url(forResource: "Spring – Sakura Girl (No Copyright Music)", withExtension: "mp3")!
        let playerItem = AVPlayerItem(url: SakuraSongUrl)
        player.replaceCurrentItem(with: playerItem)
        player.volume = 1
        player.play()
    }
}

機能概要

桜の花びらのアニメーション:CAEmitterLayerとCAEmitterCellを使用して、リアルな桜の花びらの落ちるエフェクトを作成します。

背景音楽の再生:

AVFoundationのAVPlayerを使用して背景音楽を再生し、春の雰囲気を追加します。

インターフェースデザイン:

Storyboardを使用して桜を持つ女の子の画像を追加し、視覚効果を向上させます。

桜の花びらのエフェクト

まず、CAEmitterCellを定義して桜の花びらの外見と挙動を指定します。例えば、発生率、寿命、速度、サイズ、加速度、放射範囲などです。次に、CAEmitterLayerで発射器の位置、サイズ、形状、含まれる発射ユニットを指定します。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0