2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

毎日何か成果物か学んだことを書くAdvent Calendar 2019

Day 10

Swiftでカウントダウンタイマー作る。

Posted at

はじめに

アドベントカレンダー一個一個の質が低いのは許してください。

今回作るもの

下のような感じのタイマーです。
ただ単に400秒とか600秒とか10秒といった秒数からカウントを減らしていく記事は結構あったんですが下の画像のように、時間、分、秒まで対応した記事はぱっと見なかったので(多分ある)
記事書くことにしました。
今回ライブラリとか何も使っていないのですがそういうタイマーのライブラリとかあるんですかね。
image.png
image.png

storyboard

画像にも記載してありますがLabelを一つおくだけでいいです。
画像上にあるnavigationBarとか下の二つのラベルとか青い四角とか全部いらないです。

分かりにくくてすみません。

まとめるとLabelを一つだけ配置しましょう

スクリーンショット 2019-12-12 15.40.57.png

viewController

viewController
     //timerの時間(1時間,10分,10秒)
     var time: [Int] = [1,10,10]
    //さっき作ったlabelを紐づける
    @IBOutlet weak var timeLabel: UILabel!
    override func viewDidLoad() {
        super.viewDidLoad()
        //labelの表示を初期化
        timeLabel.text = String(time[0]) + ":" + String(time[1]) + ":" + String(time[2])
        //1秒ごとに時間をtimerメソッドを呼び出す。
        Timer.scheduledTimer(timeInterval: 1, target: self, selector:#selector(timer) , userInfo: nil, repeats: true)
    }
    @objc func timer(){
        if (time[0] == 0 && time[1] == 0 && time[2] == 0) {
            timeLabel.text = "終了"
        } else {
            if time[2] > 0 {
                //秒数が0以上の時秒数を-1
                time[2] -= 1
            } else {
                //秒数が0の時
                time[2] += 59
                if time[1] > 0 {
                    //分が0以上の時、分を-1
                    time[1] -= 1
                } else {
                    //分が0の時、+59分、時間-1
                    time[1] += 59
                    time[0] -= 1
                }
            }
            timeLabel.text = String(time[0]) + ":" + String(time[1]) + ":" + String(time[2])
        }
    }

終わりに

解説はコメントに書いてある通りなんですがなんかネストしすぎてて見にくいので自分でするときはリファクタしてください。

2
3
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
2
3

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?