0
2

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 3 years have passed since last update.

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

Last updated at Posted at 2021-09-28

モチベーション

とにかく簡単にタイマーを作りたい。
せっかくバージョンアップしたxcodeを使ってあげたい。

使うものと作るもの

使うもの:sigma, SwiftUI(xcode)
作るもの:ポモドーロタイマー

figmaとSwiftUIとポモドーロタイマーの紹介。

figma

SwiftUI

ポモドーロタイマー

figmaでデザイン

figmaにはiPhone用のデザインフレームがデフォルトで用意されているので、ここでは愛用のiPhoneSEを選択します。

スクリーンショット 2021-09-28 21.24.47.png

ざっくりイメージでテキストやボックスを置いていきます。

スクリーンショット 2021-09-28 21.38.08.png

ボタンは文字よりマテリアルデザインのアイコンの方が目に入る情報量が少ない上に使いやすそうなので、ググったところGoogleが提供しているアイコンがすぐ出てきたので使うことにしました。

マテリアルデザインアイコン

アイコンを配置して、素晴らしくシンプルになりました。

スクリーンショット 2021-09-28 21.46.33.png

Googoleマテリアルデザインのアイコンは、 それぞれの開発環境から呼び出して使用できるので、ここで作ったモックと同じアイコンを使うことができます。

例として、Startアイコンを検索して、xcodeで使う場合のコードを確認しています。

スクリーンショット 2021-09-28 21.48.03.png

15分くらいでデザインは終わりにして、コードを書き始めます。

SwiftUI

Flutterのおかげでxcodeの出番がめっきり減っていると思いますが、急に思い出したかのように使っていきます。

xcodeのプロジェクトを作り、タイマー機能を実装していきます。
xcodeの開発イメージはこんな感じです。

スクリーンショット 2021-09-28 21.59.23.png

cocoapodsを使おうと思ったら、pod installでエラーが出る問題が発生。
M1 Macの問題だったので以下を参照してひとまず解決。

iconをxcodeに入れるよりappleのアイコンを使った方が早いので、方針を変えてsystemimageを使っていきます。

以下のディベロッパーページからダウンロードすると、アプリとして実行できるアイコン一覧が手に入ります。このアプリ上のアイコン名をアプリの実装のために使用します。

スクリーンショット 2021-09-29 0.31.37.png

タイマーはTimeが上手いことやってくれそうなのでそのまま実装します。

//定義
class Timer : NSObject

//実装例
let timer = Timer.publish(every: 1, on: .main, in: .common).autoconnect()

タイマー動作はフラグ変数を使いながら制御しつつ、ボタンで再生や停止などの設定していきます。

//定義
struct Button<Label> where Label : View

Button(action: {
    // 実行したい処理
}){
    // ボタンの情報
}

//実装例
Button(action: {
    activeState = true
}) {
    Image(systemName: "play") //
   .imageScale(.large)
}

最終的なUI配置は以下の様になりました(超シンプル)。

スクリーンショット 2021-09-29 0.26.48.png

調べながら1時間くらいでポモドーロの動作部分を作れました。
通知や音の実装は後回しにしたので、次回の課題にしておきます。

ソースは近日公開する予定です。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?