目的・役割

月単位のカレンダーで過去の豆知識を振り返れる画面。HomeViewの2ページ目(TabView)として実装。 ロックされた日は Rewarded広告視聴で解放可能。

UI 構成

要素種類説明
月選択バーHStack前月・次月・年月表示
曜日ヘッダーHStack日〜土
日付グリッドLazyVGrid当月の日付を6行で表示
状態アイコンOverlayログイン日: ★、広告視聴日: 🎬、未閲覧: ロック
tip表示エリアVStack選択日のtip(or「閲覧するには広告」)

状態

状態表示内容
表示可能日tipを表示
ロック日(未閲覧 + 広告未視聴)「広告を見て解放」アラート
未来日タップ無効

遷移

操作遷移先
表示可能日タップ同画面でTipCardView表示
ロック日タップ解放アラート → Rewarded広告 → markAsAdViewed → tip表示
クイズボタンQuizView (.sheet)
月選択ボタンDatePicker

使用するデータモデル

HistoryService {
    func getLoginDates() -> [Date]
    func getAdViewedDates() -> [Date]
    func markAsLogin(date: Date)
    func markAsAdViewed(date: Date)
}

実装メモ

関連

変更履歴

バージョン日付変更内容
1.02026-05-09初版作成