Closed33
M-1 Timerをつくる
概要
- 賞レース出てる芸人はn分ネタをやる
- 時計チラチラ見ることはできないから、1分ごとにApple Watchが震えると良さそう
- インターバルは任意で変えられるとなおよし
- 賞レースだけじゃなくて、プレゼンとかでも使える?
実機ビルドが完全にできない
設計図
英語日本語対応しようと思ったら、String Catalogstというものができてたらしい
key / value同じにするの、良くないっぽいけど、今回はアプリめちゃくちゃ小さいからいいか
Startをkeyにしてカタログに登録したら、
Text("Start")
これがもうローカライズ文字列として処理されるようになった。
便利な反面、ダブルクオーテーションは単純文字列として扱って欲しいような気持ちもある。。。
アニメーションのモディファイアがちょっと変わってたらしい
push/popしたくなった
画面遷移にpath使うのが良さそう
Timerのキャンセル、サボろうかと思ったら、キャンセルしないとViewが消えても動き続けるっぽい
こんな書き方あるんだ
var id: Self { self }
Pickerの謎のバグに出くわした
1〜60までの値を生成したら1に戻される
import SwiftUI
struct SettingView: View {
@AppStorage("Timelimit") var timelimit: TimeInterval = 120
@AppStorage("VibrationInterval") var vibrationInterval: TimeInterval = 60
@State var selectedTimelimit: Timelimit = .two
@State var selectedVibrationInterval: TimeInterval = 60
var body: some View {
VStack {
HStack() {
Text("Time\nlimit")
Picker("", selection: $selectedTimelimit) {
ForEach(Timelimit.allCases) {
Text($0.title)
}
}
.onChange(of: selectedTimelimit) {
}
Text("min")
}
HStack() {
Text("Interval")
Picker("", selection: $selectedVibrationInterval) {
ForEach(1..<101) {
Text(String($0))
}
}
.onChange(of: vibrationInterval) {
// …
}
Text("sec")
}
}
.onAppear {
selectedTimelimit = Timelimit(interval: timelimit)
selectedVibrationInterval = vibrationInterval
}
}
}
このエラーが出てるけど、関係あるのかないのか不明
ScrollView contentOffset binding has been read; this will cause grossly inefficient view performance as the ScrollView's content will be updated whenever its contentOffset changes. Read the contentOffset binding in a view that is not parented between the creator of the binding and the ScrollView to avoid this.
関係なさそう
もしかしたらシミュレーターだけの問題なのかな?
あーわかった。渡してる値がDoubleだからか……
@AppStorage の値も Binding可能らしい。
PickerView、同じViewを使いまわせた
ちょうどいい目的がない
なんとなくPhysical therapyにするか
Self care
Guide users through relatively brief activities. These activities focus on the user’s emotional well-being or health, such as brushing their teeth.
Mindfulness
Help users start and end silent meditation sessions. For walking meditation, consider using HKWorkoutSession instead. Similarly, if your app plays audio during the entire meditation session, there’s no reason to use a WKExtendedRuntimeSession. The background audio mode provides additional runtime as long as the audio plays. For more information, see Playing Background Audio.
Physical therapy
Guide users through stretching, strengthening, or range-of-motion exercises. If the physical therapy activity is strenuous—for example, riding an exercise bike—consider using an HKWorkoutSession instead.
Smart alarm
Schedule a window of time to monitor the user’s heart rate and motion. The app uses this information to determine the optimal time to play an alarm, usually to wake the user from sleep.
シミュレーターでも音でHapticは確認できた
バックグラウンドでも動いてそうだね
審査通ってストア公開された
実機だと、通知のHapticで来るの、微妙かも。
もし途中で別の通知来たら混乱しちゃう?
WKInterfaceDevice.current().play(.notification)
この記事見たらHapticの雰囲気、実機で試さないでも推測できるか
このスクラップは2023/12/20にクローズされました