ios

SwiftUI animations and transitions

SwiftUI makes animations declarative and automatic. The .animation() modifier animates state changes with built-in curves like .easeInOut, .spring(), or custom timing. Explicit animations use withAnimation {} blocks to scope which changes animate. Tra

UIKit delegates and protocols

Delegates enable objects to communicate events and customize behavior. The delegate pattern uses protocols to define a contract—I create a protocol with optional and required methods, and the delegating object holds a weak reference to avoid retain cy

Sign in with Apple authentication

Sign in with Apple provides secure, privacy-focused authentication required for apps with third-party login. Users create accounts with Face ID or Touch ID, and Apple generates unique identifiers per app. I use ASAuthorizationController to initiate th

AVFoundation for media playback

AVFoundation provides comprehensive audio and video capabilities. AVPlayer plays media from URLs or local files with playback controls. AVPlayerLayer renders video content in views. I observe player state with KVO or Combine to track playback progress

Haptic feedback with UIFeedbackGenerator

Haptic feedback provides tactile responses that enhance user experience. iOS offers three feedback generators: UIImpactFeedbackGenerator for physical impacts with light, medium, or heavy intensities; UINotificationFeedbackGenerator for success, warnin

Accessibility with VoiceOver support

Accessible iOS apps work for all users, including those with disabilities. VoiceOver reads UI elements, requiring proper labels and hints. I set .accessibilityLabel() for non-text elements like images and buttons, describing what they represent. .acce

MapKit integration for location features

MapKit displays interactive maps with annotations, overlays, and user location. SwiftUI's Map view simplifies basic map integration with declarative syntax. I add annotations for points of interest, polylines for routes, and polygons for regions. MKCo

URLSession networking with async/await

Modern Swift networking uses async/await for cleaner asynchronous code compared to completion handlers. URLSession's async methods like data(from:) make network calls straightforward. I wrap API calls in a service layer with typed responses using Coda