公開中のアプリ

[Swift]タイマーで1秒毎にテキストを変更!

今回はタイマークラスのscheduledTimerメソッドを使って1秒毎にテキスト変更してみた!
完成はこんな感じです。
左のボタンを押したら自動的にテキストが切り替わり、右側のボタンでストップしています。

部品を配置します。

buttonを2つとlabelをstoryboardに配置し、ViewController.swiftと紐付けておきます。
名前はbtnとbtn2とlabel1にしましたが任意の名前で大丈夫です。
buttonはActionにします。

タイマー用の変数を作る。

まずvar [任意の名前]: Timer!と書きます。
こんな感じです。

var btnTimer: Timer!

タイマーを作動させる為の関数を作る。

矢印の部分を任意で書き換えるだけで使えます。
#selector(self.chageColor)のchageColorは後で作る関数名です。
ここで書いた関数が指定した秒数毎に実行されます。

上の写真のコードが下記のコードなんですけど、#から先がグレーになってるけど気にしないでコピペして下さい。

func startTimer() {
        self.btnTimer = Timer.scheduledTimer(timeInterval: 1, target: self, 
     selector: #selector(self.chageColor), userInfo: nil, repeats: true)
    }

scheduledTimerメソッドで指定する関数を作る。

その前に変数を一つ宣言しておきます。今回はvar x = 0と言う変数を用意しました。
2行目からの関数ですが、最初に実行される処理で変数xに1を足しています。
その後if文でxに代入されている数字と1・2・3・4を比較してそれぞれ処理を分岐しています。

 var x = 0
    @objc func chageColor() {
        x += 1
        if x == 1 {
            self.label1.text = "毎日"
        } else if x == 2 {
            self.label1.text = "宝焼酎を"
        } else if x == 3 {
            self.label1.text = "100円ローソンの"
        } else if x == 4 {
            self.label1.text = "酎割用レモンソーダで"
        } else if x == 5 {
            self.label1.text = "割って飲んでます。"
            x = 0
        }
    }

buttonを押した時の処理を書く。

btnを押したらタイマーがスタートして、btn2を押したらタイマーがストップする処理を書きます。
btnの方には3.で作ったstartTimer()関数を書く事でbtnが押された時にタイマーをスタートさせています。
btn2の方にはstartTimer()で走っているbtnTimerをストップさせています。

    @IBAction func btn(_ sender: Any) {
        startTimer()
    }
    @IBAction func btn2(_ sender: Any) {
        self.btnTimer!.invalidate()
    }

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

アプリ