iOS
 Computer >> コンピューター >  >> プログラミング >> iOS

【Swift/iOS】Timerを使って一定間隔で処理を繰り返し実行する方法

はじめに

この記事では、iOSアプリ開発において一定の間隔をおいてタスクを繰り返し実行する方法を解説します。

例として、特定の時間間隔ごとにラベルの表示内容を繰り返し更新する処理を実装していきます。iOSではTimerクラスを使用することで、このような定期処理を簡単に実現できます。それでは始めましょう。

手順1:プロジェクトの作成

Xcodeを起動し、「New Project」→「Single View Application」を選択して新しいプロジェクトを作成します。プロジェクト名は「Timer」としておきましょう。

手順2:ラベルの配置

Main.storyboardを開き、下図のようにラベルを画面に追加します。

【Swift/iOS】Timerを使って一定間隔で処理を繰り返し実行する方法

手順3:IBOutletの接続

下部に配置したラベルに対して@IBOutletを作成し、接続します。名前は「timerLabel」としてください。

手順4:変数の宣言

今回は、ラベルに「アプリ起動からの経過秒数」を表示させます。そのため、ViewController内に以下の2つの変数を宣言します。

var timeLaunched: Int = 0
var timer: Timer?

手順5:ラベル更新用メソッドの作成

ラベルを更新するための関数を追加します。この関数は、後ほど一定間隔で繰り返し呼び出すことになります。

@objc func updateLabel() {
   timerLabel.text = " Time Launched = \(timeLaunched) Seconds "
   timeLaunched += 1
}

この関数は、起動からの経過秒数を1ずつ加算し、その値をラベルに表示するシンプルな処理を行っています。

手順6:タイマーの初期化と開始

ViewControllerのviewDidLoad内でタイマーを初期化し、一定間隔でupdateLabel関数を呼び出します。ここでは1秒ごとに関数を実行するよう設定していますが、要件に応じて間隔は自由に変更できます。

override func viewDidLoad() {
   super.viewDidLoad()
   // Do any additional setup after loading the view, typically from a nib.
   updateLabel()
   timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: (#selector(ViewController.updateLabel)), userInfo: nil, repeats: true)
}

ポイントは、repeatsをtrueに設定している点です。これにより、updateLabel関数が毎秒自動的に繰り返し呼び出されるようになります。

補足:クロージャを使ったモダンな書き方

Swift 5以降では、クロージャ形式のAPIを使うことで、より簡潔に記述することも可能です。

timer = Timer.scheduledTimer(withTimeInterval: 1.0, repeats: true) { _ in
   self.updateLabel()
}

実行結果

アプリをビルドして起動すると、ラベルが1秒ごとに更新されていく様子を確認できます。経過秒数がリアルタイムにカウントアップしていれば成功です。

【Swift/iOS】Timerを使って一定間隔で処理を繰り返し実行する方法

  1. 【Swift入門】UIWebViewにPDFファイルを読み込んで表示する方法

    はじめにこの記事では、Swiftを使ってiOSアプリのUIWebViewにPDFファイルを読み込んで表示する方法を解説します。WebViewでのPDF表示はとてもシンプルで、いくつかの手順を踏むだけで実装できます。初心者の方でも迷わず進められるよう、順番に見ていきましょう。補足:UIWebViewはiOS 12以降で非推奨(Deprecated)となっており、現在はWKWebViewの使用が推奨されています。ただし、既存のレガシープロジェクトの保守や学習目的ではUIWebViewのコードも参考になるため、本記事ではそのまま紹介します。ステップ1:Xcodeで新規プロジェクトを作成するXcode

  2. 【Android】一定の時間間隔ごとに非同期タスク(AsyncTask)を繰り返し実行する方法

    はじめにこの記事では、Androidアプリにおいて一定の時間間隔で非同期タスク(AsyncTask)を繰り返し実行する方法を解説します。HandlerクラスのpostDelayed()メソッドを組み合わせることで、指定した間隔で処理を自動的に繰り返すことが可能になります。手順1:新規プロジェクトの作成まず、Android Studioで新しいプロジェクトを作成します。メニューからFile → New Projectを選択し、必要な項目を入力してプロジェクトを作成してください。手順2:レイアウトファイル(activity_main.xml)の編集res/layout/activity_main.