iOS prototype application showcasing AI-powered UI controls and interactions for Day One journal app.
This project is a SwiftUI-based iOS application that prototypes various AI-enhanced features and UI controls for the Day One journaling app. It demonstrates different approaches to presenting AI features, handling user interactions, and managing UI states.
The app includes multiple prototype views accessible from the main menu:
- ImageGenerationView: Basic image generation interface
- ImageGenerationView2: Advanced carousel-based image generation with:
- Three independent rows of generated images
- Horizontal scrolling carousels with page indicators
- Dynamic placeholder generation
- Style picker with 18+ art styles (3D, Anime, Cinematic, etc.)
- Context menu support for saving and sharing
- Auto-advance on style changes
- EntrySummaryView: AI-powered journal entry summarization interface
- TranscribeAudioView: Audio transcription UI with AI integration
- PhotoDescriptionView: Automatic photo description generation
- Caption and media description support
- Photo metadata display (date, location, camera info)
- Favorite toggling
- Keyboard-aware floating panel for editing
- CaptionsDescriptionsView: Enhanced caption and description editing
- Floating panel design
- Character count validation (280 character limit)
- Focus management for optimal UX
- IOSNativeViewsView: Exploration of native iOS UI components and patterns
- PresentationMethodsView: Different approaches to presenting modal content
- Sheet presentations
- Custom presentation styles
- KeyboardAccessoriesView: Keyboard accessory view implementations
- Custom input accessories
- Keyboard-aware layouts
- Accent Color:
#44C0FF(bright blue) - consistent across all views - Custom Color Extension: Hex color support for SwiftUI
- Responsive Design: Adapts to different screen sizes
Full-screen photo viewing with:
- Photo metadata display
- Caption editing
- Favorite marking
- Info panel overlay
Floating panel for editing photo captions with:
- Date, time, and timezone display
- Location information
- Caption text field with character limit
- Focus state management
- Dismissible UI
Custom container that:
- Monitors keyboard appearance
- Adjusts content position dynamically
- Provides tap-to-dismiss functionality
- Centers content when keyboard is hidden
UIViewRepresentable wrapper for:
- Keyboard notification handling
- Height tracking
- Active state monitoring
- Sheet Presentations: Used for feature views
- Navigation Stack: Main menu navigation
- TabView with PageTabViewStyle: Carousel implementations
- Context Menus: Long-press actions for images
- Focus States: Keyboard focus management
- Custom Presentation Detents: Large sheet presentations
DO-AI-Controls-Prototypes/
├── DO-AI-Controls/
│ ├── DO_AI_ControlsApp.swift # App entry point
│ ├── ContentView.swift # Main menu with feature buttons
│ ├── ImageGenerationView.swift # Image generation v1
│ ├── ImageGenerationView2.swift # Image generation v2 (carousel)
│ ├── EntrySummaryView.swift # Entry summarization
│ ├── TranscribeAudioView.swift # Audio transcription
│ ├── PhotoDescriptionView.swift # Photo descriptions
│ ├── CaptionsDescriptionsView.swift # Caption editing
│ ├── IOSNativeViewsView.swift # Native views showcase
│ ├── PresentationMethodsView.swift # Presentation patterns
│ ├── KeyboardAccessoriesView.swift # Keyboard accessories v1
│ └── KeyboardAccessoryViewsView.swift # Keyboard accessories v2
├── DO-AI-Controls.xcodeproj/
└── README.md
- iOS 16.0+
- Xcode 15.0+
- SwiftUI
- Swift 5.9+
- Clone the repository
- Open
DO-AI-Controls.xcodeprojin Xcode - Select your target device or simulator
- Build and run (⌘R)
- Uses
@Statefor local view state @Bindingfor parent-child data flow@Environmentfor system values (dismiss, colorScheme)@FocusStatefor keyboard focus tracking
DispatchQueue.main.asyncAfterfor simulated image generation- Delayed focus management for smooth animations
- Keyboard notification handling via NotificationCenter
Color(hex:): Custom hex color initializationUIImage.gradientImage(): Gradient image generation for placeholders
- Actual AI model integration
- Real image generation via API
- Persistent data storage
- Enhanced error handling
- Accessibility improvements
- Unit and UI tests
Copyright © 2025 Day One. All rights reserved.
Paul Mayne
