Blog Topics: SwiftUI
Beginner SwiftUI
- Your first SwiftUI view explained - Body, some View, modifiers
- @State basics: Making views interactive - Simple counter example
- VStack, HStack, ZStack demystified - Layout fundamentals
- Lists and ForEach: Displaying data - Identifiable, indices
- NavigationStack basics - Push, pop, navigation paths
- Buttons and tap gestures - Action closures, styling
- Text and fonts in SwiftUI - Modifiers, custom fonts
- Images and SF Symbols - Resizable, aspect ratio, symbols
- Sheets and fullScreenCover - Modal presentation
- Alerts and confirmation dialogs - New iOS 15+ API
- @Binding explained: Two-way data flow - Parent-child communication
- @EnvironmentObject vs @Environment - When to use which
- ObservableObject done right - @Published, objectWillChange
- @Observable macro (iOS 17) - Migration from ObservableObject
- Form and settings screens - Toggle, Picker, Stepper patterns
- TabView with badges - Custom tabs, programmatic selection
- Searchable modifier - Adding search to lists
- Pull to refresh with .refreshable - Async refresh patterns
- Context menus and swipe actions - List interactions
- Toolbar modifier - Navigation bar items, bottom bars
Advanced SwiftUI
- View identity and structural identity - Why views rebuild
- EquatableView for performance - Preventing unnecessary redraws
- ViewBuilder and result builders - Creating DSL-like APIs
- AnyView and type erasure: When to use - Performance implications
- MatchedGeometryEffect - Hero animations between views
- Canvas for custom drawing - High-performance rendering
- TimelineView for live updates - Clocks, animations, widgets
- Layout protocol (iOS 16) - Custom container layouts
- ContainerRelativeShape - Widgets and adaptive corners
- FocusState for keyboard control - Form navigation, focus rings
iOS 17/18 New Features
- @Bindable explained - New binding for @Observable
- #Preview macro - Replacing PreviewProvider
- NavigationSplitView - iPad/Mac navigation patterns
- ContentUnavailableView - Empty states done right
- Inspector modifier - Side panels on iPad/Mac
- ScrollViewReader vs scrollPosition - New iOS 17 scrolling
- sensoryFeedback modifier - Haptics made easy
- symbolEffect modifier - Animated SF Symbols
- phaseAnimator - Multi-step animations
- keyframeAnimator - Complex animation sequences
High-Traffic SwiftUI Searches
- “Cannot find type in scope” SwiftUI - Import issues
- “View body is too complex” - Splitting large views
- SwiftUI list not updating - Identifiable, ForEach gotchas
- Keyboard not dismissing - FocusState, resignFirstResponder
- Navigation bar title not showing - Modifier order issues
- Image not resizable - Common modifier mistakes
- Sheet not presenting data - Optional binding issues
- ScrollView not scrolling - Frame, geometry issues
- Background color not filling screen - ignoresSafeArea
- Custom back button in NavigationStack - Hiding default button
SwiftUI + Frameworks
- SwiftUI + MapKit - Map, annotations, camera position
- SwiftUI + Charts - Line, bar, pie charts basics
- SwiftUI + PhotosPicker - Image selection made easy
- SwiftUI + ShareLink - Native sharing
- SwiftUI + StoreKit 2 - In-app purchases UI
- SwiftUI + AVKit - Video player integration
- SwiftUI + WebKit - WKWebView wrapper
- SwiftUI + CoreLocation - Location permissions, updates
- SwiftUI + LocalAuthentication - Face ID, Touch ID
- SwiftUI + WidgetKit - Timeline, configuration