LoginSignup
0
1

More than 1 year has passed since last update.

figma + SwiftUIでポモドーロタイマー作ってみた part2

Posted at

前回記事

前回はタイマー処理の実装と、UIを大雑把に作成しました。
今回は時間が0になった時に音で知らせる機能の追加と、より使いやすいタイマーにするためにボタンの配置修正をします。

音を出す機能の追加 + 配置修正

音を出すこと考えて思いつくのは、システム音声を使うか、オリジナルのmp3などを読み込ませるかでした。
今回もなるべく楽をするために、システム音声を使うことにします。

以下のコードが音を出すために作った関数です。実装だけ見ると数行ですが、音に関連する知識はかなり広がってしますので、情報を探すのが難しいです。

import AudioToolbox //忘れずに追加
 ~~~~
func playSound(){
    let soundIdRing:SystemSoundID = 1016
    AudioServicesPlaySystemSound(soundIdRing)
    }
}

まず、FrameworkのAudioToolboxについてです。オーディオの録音や再生、フォーマット変換、オーディオセッションの設定など音関連の諸々に携わっています。

今回使いたいのは再生だけなので、情報を絞っていきます。

ぴったりなのが、関数のAudioServicesPlaySystemSound(_:)です。関数の役割はシステム音の再生です。

//定義
func AudioServicesPlaySystemSound(_ inSystemSoundID: SystemSoundID)

SystemSoundIDを設定するとIDに対応した音が鳴ります。
IDは公式のドキュメントを探しても見つからなかったので、GitHubの記事を参照しました。

システム音の再生だけですと、これだけで実装できます。

配置修正

最近mocriというポモドーロしながらトークができるアプリを使っているのですが、このアプリのタイマーのUIの方が今作っているUIより100%優れていたので、参考にさせてもらいました。

再生、停止、一時停止、切り替えと4つのボタンがあるのですが、全てを常時表示する必要はないんですよね。。。

再生中は再生と切り替えが不要で、停止中は停止と一時停止が不要です。
表示するボタンを切り替える様に実装し直しました。

画面収録 2021-09-29 22.40.48.gif

今回は音関連の機能を実装しました。
次回は通知機能を実装予定です。

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