Signed-off-by: Matt Bruce <mbrucedogs@gmail.com>
This commit is contained in:
parent
6c2846a072
commit
51d6859209
6
PRD.md
6
PRD.md
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user