LoginSignup
0
1

More than 3 years have passed since last update.

8日目プログレスバーを使ったタイマーアプリ。

Posted at

8日目のアプリ

プログレスバーを使ったタイマーアプリ。

画面キャプチャ

ボタンを3つおいて、各ボタンを押すと、ボタン名が表示される。
押すボタンによって、トータル時間が変わって、
経過時間を下のプログレスバーで表示。
プログレスバーが最後になると、音が出る。
という仕様にしました。

以下の流れで作りました。

  1. オブジェクトを配置して、Viewcontrolerに紐付け
  2. プログレスバーを追加
  3. import AVFoundation
  4. 再生するプレイヤーを作って、取り込んだ音を再生

できたこと

  • プログレスバーの設置
  • 音の再生(復習)
  • ##書いたコードを共有します!
import UIKit
import AVFoundation //音声ファイルを使うときimportする

class ViewController: UIViewController {
    @IBOutlet weak var displayText: UILabel!


    let eggTime = [
        "Soft": 5,
        "Medium": 7,
        "Hard": 12
    ]

    var myTimer = Timer()
    var totalTime = 0
    var secondsPassed = 0
    var player : AVAudioPlayer! // 音声ファイルを再生するデッキ player を作る



    @IBOutlet weak var progressBar: UIProgressView!


    @IBAction func hardnessSelected(_ sender: UIButton) {

        let selected = sender.currentTitle!
//        switch selected {
//        case "Soft":
//            print(eggTime["Soft"]!)
//        case "Medium":
//            print(eggTime["Medium"]!)
//        case "Hard":
//            print(eggTime["Hard"]!)
//
//        default:
//            print("none")
//        }
        myTimer.invalidate()
        secondsPassed = 0

        totalTime = eggTime[selected]!
        displayText.text = "\(sender.currentTitle!)"
        progressBar.progress = 0.0

        myTimer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(action), userInfo: nil, repeats: true)

    }

    @objc func action() {
        if secondsPassed < totalTime {
            secondsPassed += 1
            progressBar.progress = Float(secondsPassed) / Float(totalTime)

            print(Float(secondsPassed) / Float(totalTime))
        print(secondsPassed)
        } else {
//            progressBar.progress = 1.0
            myTimer.invalidate()
            displayText.text = "done!"
            //再生デッキに入れるCDを作る
            let url = Bundle.main.url(forResource: "alarm_sound", withExtension: "mp3")
            //再生デッキに入れる
            player = try! AVAudioPlayer(contentsOf: url!)
            //デッキの再生ボタンを押す
            player.play()

        }
        }

}

感想

よし、できた。きっとw

0
1
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
1