Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>

This commit is contained in:
Matt Bruce 2026-02-01 09:14:10 -06:00
parent 6c2846a072
commit 51d6859209
3 changed files with 12 additions and 3 deletions

6
PRD.md
View File

@ -19,7 +19,7 @@ TheNoiseClock is a SwiftUI-based iOS application that combines a customizable di
- **Individual digit views** with consistent spacing and alignment - **Individual digit views** with consistent spacing and alignment
- **Font customization** with family, weight, and design selection - **Font customization** with family, weight, and design selection
- **Dynamic dot sizing** that matches selected font weight - **Dynamic dot sizing** that matches selected font weight
- **Safe area handling** with proper Dynamic Island avoidance - **Safe area handling** with proper Dynamic Island avoidance on iPhone and full-width layout on iPad
- **Full-screen mode** with status bar hiding and tab bar expansion - **Full-screen mode** with status bar hiding and tab bar expansion
- **Orientation-aware spacing** for optimal layout in all orientations - **Orientation-aware spacing** for optimal layout in all orientations
@ -44,7 +44,7 @@ TheNoiseClock is a SwiftUI-based iOS application that combines a customizable di
- **iPad compatibility**: Uses SwiftUI's native `.toolbar(.hidden, for: .tabBar)` for proper iPad sidebar-style tab bar hiding - **iPad compatibility**: Uses SwiftUI's native `.toolbar(.hidden, for: .tabBar)` for proper iPad sidebar-style tab bar hiding
- **Cross-platform support**: Works correctly on both iPhone (bottom tab bar) and iPad (top sidebar tab bar) - **Cross-platform support**: Works correctly on both iPhone (bottom tab bar) and iPad (top sidebar tab bar)
- **Smooth transitions**: Animated transitions between modes - **Smooth transitions**: Animated transitions between modes
- **Status bar control**: Status bar automatically hidden in full-screen mode - **Status bar control**: Status bar hidden on the Clock tab (including full-screen mode)
- **Safe area expansion**: Clock expands into tab bar area when hidden - **Safe area expansion**: Clock expands into tab bar area when hidden
- **Dynamic Island awareness**: Proper spacing to avoid Dynamic Island overlap - **Dynamic Island awareness**: Proper spacing to avoid Dynamic Island overlap
- **Orientation handling**: Full-screen mode works in both portrait and landscape - **Orientation handling**: Full-screen mode works in both portrait and landscape
@ -141,7 +141,7 @@ TheNoiseClock is a SwiftUI-based iOS application that combines a customizable di
- **Component consolidation**: Eliminated redundant HorizontalColon and VerticalColon views - **Component consolidation**: Eliminated redundant HorizontalColon and VerticalColon views
### Full-Screen Mode Enhancements ### Full-Screen Mode Enhancements
- **Status bar hiding**: Automatic status bar hiding in full-screen mode - **Status bar hiding**: Status bar remains hidden while on the Clock tab
- **Tab bar expansion**: Clock expands into tab bar area when hidden - **Tab bar expansion**: Clock expands into tab bar area when hidden
- **Safe area management**: Proper handling of Dynamic Island and other safe areas - **Safe area management**: Proper handling of Dynamic Island and other safe areas
- **Smooth transitions**: Animated transitions between normal and full-screen modes - **Smooth transitions**: Animated transitions between normal and full-screen modes

View File

@ -27,6 +27,7 @@ TheNoiseClock is a distraction-free digital clock with built-in white noise and
- Auto-fit sizing and manual scale control - Auto-fit sizing and manual scale control
- Custom fonts, weights, and designs with live preview - Custom fonts, weights, and designs with live preview
- Glow and opacity controls for low-light comfort - Glow and opacity controls for low-light comfort
- Clock tab hides the status bar for a distraction-free display
**White Noise** **White Noise**
- Multiple ambient categories and curated sound packs - Multiple ambient categories and curated sound packs

View File

@ -23,6 +23,12 @@ struct ClockView: View {
.ignoresSafeArea() .ignoresSafeArea()
GeometryReader { geometry in GeometryReader { geometry in
let isPhone = UIDevice.current.userInterfaceIdiom == .phone
let isLandscape = geometry.size.width > geometry.size.height
let islandPadding: CGFloat = isLandscape && isPhone ? 120 : 0
let safeInset = max(geometry.safeAreaInsets.leading, geometry.safeAreaInsets.trailing)
let symmetricInset = isLandscape ? max(safeInset, islandPadding) : 0
ZStack { ZStack {
// Main clock display container // Main clock display container
ClockDisplayContainer( ClockDisplayContainer(
@ -35,10 +41,12 @@ struct ClockView: View {
ClockOverlayContainer(style: viewModel.style) ClockOverlayContainer(style: viewModel.style)
} }
.padding(.horizontal, symmetricInset)
} }
} }
.ignoresSafeArea() .ignoresSafeArea()
.toolbar(.hidden, for: .navigationBar) .toolbar(.hidden, for: .navigationBar)
.statusBarHidden(true)
.overlay { .overlay {
// Tab bar management overlay // Tab bar management overlay
ClockTabBarManager(isDisplayMode: viewModel.isDisplayMode) ClockTabBarManager(isDisplayMode: viewModel.isDisplayMode)